本文譯自:http://developer.android.com/guide/topics/graphics/hardware-accel.html
從Android3.0(API Level 11)開始,Android 2D渲染管道能夠更好的支援硬體加速。硬體加速執行的所有的繪圖操作都是使用GPU在View對象的畫布上來進行的。因為啟用硬體加速會增加資源的需求,因此這樣的應用會佔用更多的記憶體。
啟用硬體加速的最容易的方法是給整個應用程式都開啟全域硬體加速功能。如果應用程式只使用標準的View和Drawable,那麼開啟全域硬體加速不會導致任何的不良的繪製效果。但是,因為硬體加速並不支援所有的2D圖形繪製操作,所以對於那些使用定製的View和繪製調用的應用程式來說,開啟全域硬體加速,可以會影響繪製效果。問題通常會出現在對那些不可見的元素進行了異常或錯誤的像素渲染。為了避免這種問題,Android提供以下層級,以便可選擇性的啟用或禁止硬體加速:
1. Application
2. Activity
3. Window
4. View
如果應用程式執行了定製化的繪圖,就要在實際的帶有硬體加速的硬體裝置上測試,以便發現問題。
控制硬體加速
能夠用以下層級來控制硬體加速
Application層級
在應用的Android資訊清單檔中,把下列屬性添加到<application>元素中,來開啟整個應用程式的硬體加速。
<applicationandroid:hardwareAccelerated="true" ...>
Activity層級
如果應用程式不能夠正確的使用被開啟的全域硬體加速,那麼也可以對Activity分別進行控制。在<activity>元素中使用android:hardwareAccelerated屬性,能夠啟用或禁止Activity層級的硬體加速。以下樣本啟用全域的硬體加速,但卻禁止了一個Activity的硬體加速:
<applicationandroid:hardwareAccelerated="true">
<activity .../>
<activityandroid:hardwareAccelerated="false"/>
</application>
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層”。