關於Android硬件加速

本文轉載自:http://blog.csdn.net/u013598111/article/details/49975843

從Android 3.0開始,Android的2D渲染管線可以更好的支持硬件加速。硬件加速使用GPU進行View上的繪製操作。
硬件加速可以在一下四個級別開啓或關閉:
Application
Activity
Window
View
Application級別
往您的應用程序AndroidManifest.xml文件爲application標籤添加如下的屬性即可爲整個應用程序開啓硬件加速:

<application android:hardwareAccelerated="true" ...>

Activity級別
您還可以控制每個activity是否開啓硬件加速,只需在activity元素中添加android:hardwareAccelerated屬性即可辦到。比如下面的例子,在application級別開啓硬件加速,但在某個activity上關閉硬件加速。

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

Window級別
如果您需要更小粒度的控制,可以使用如下代碼開啓某個window的硬件加速:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注:目前還不能在window級別關閉硬件加速。
View級別
您可以在運行時用以下的代碼關閉單個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中.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章