Android 控制硬加速 hardwareAccelerated

來源:互聯網
上載者:User

標籤:win   產生   問題   false   添加   瞭解   最新   可見   and   

從Android3.0 (API level11)開始,Android的2D顯示管道被被設計得更加支援硬加速了.硬加速使用GPU承擔了所有在View的canvas上執行的繪製操作.

  啟用硬加速最簡單的的方法是對整個應用啟用硬體速.如果你的應用只使用標準的view和Drawable,全域啟用硬加速將不會帶來任何負面影響.然而,因為硬加速不是被所有的2D繪製所支援,所以啟用它時可能對你的自訂繪製產生影響.出現的問題經常是不可見的,也可能是異常,或錯誤地顯示了像素.為了避免這些問題,Android提供了在以下各層級上啟用或禁止硬加速的能力:

ApplicationActivityWindowView

  如果你的應用使用了自訂繪製,需要在真實的裝置上啟用硬加速進行測試來找出問題."不支援的繪製操作"一節描述了已知的不能被硬加速的繪製操作以及如何避開它們.

控制硬加速

  你可以在以下層級上分別控制硬加速:

ApplicationActivityWindowView

Application級

  在你的manifest檔案中,把以下屬性添加到<application>標籤來對你的整個應用啟用硬加速:

<applicationandroid:hardwareAccelerated="true" ...>

Activity級
  如果你的應用在全域啟用硬加速時行為不正確,你可以對個別activities單獨啟用硬加速.欲在actvity層級啟用或禁止硬加速,你可以對<activity>元素使用android:hardwareAccelerated屬性.下面的例子在整個應用中啟用了硬加速但對一個activity禁止了硬加速:

<applicationandroid:hardwareAccelerated="true"><activity... /><activityandroid:hardwareAccelerated="false" /></application>

Window級
  如果你需要更高顆粒度的控制,你可以使用以下代碼為一個window啟用硬加速:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

註:現在你還不能在window層級禁止硬加速.

Viewlevel

你可以在運行時使用以下代碼禁止個別的View的硬加速:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

註:當前你不能在View層級啟用硬加速.View層有除禁止硬加速之外的其它功能.

判定一個View是否能被硬加速

  有時一個應用瞭解是否啟用了硬體速是很有用的,對那些自訂View之類的東西尤其重要.在你的應用做了一些不被最新的管線所支援的自訂繪製時這更加重要.

  有兩種方法可以檢查應用是否被硬加速:

View.isHardwareAccelerated():如果View附加到一個硬加速的window上就返回true.

Canvas.isHardwareAccelerated():如果Canvas被硬加速了就返回true.

  如果你必須在你的繪製代碼中做這個,應使用Canvas.isHardwareAccelerated()而不是View.isHardwareAccelerated().當一個view附加到一個硬加速的window上,它仍可以使用非硬體速的Canvas進行繪製操作.比如當為了快取而把一個view畫到一個bitmap中.

Android 控制硬加速 hardwareAccelerated

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.