Android 硬件加速(Hardware acceleration)

原文出處:http://www.ccbu.cc/android/android-hardware-acceleration

硬件加速

Android 3.0 (API level 11), 開始支持
所有的View 的canvas都會使用GPU,但是硬件的加速會占有一定的RAM。
在API >= 14上,默認是開啟的,如果你的應用只是標準的View和Drawable,全局都打開硬件加速,是不會有任何問題的。
然而,硬件加速并不支持所有的2D畫圖的操作,這時開著它,可能會影響到你的自定義控件或者繪畫,出現(xiàn)異常等行為,
所以android對于硬件加速提供了可選性

如果你的應用執(zhí)行了自定義的繪畫,可以通過在真機上測試開啟硬件加速查找問題

硬件加速的級別

Application

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

Activity

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

Window

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

View

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Note: 你可以關閉View級別的硬件加速,但是你不能在View級別開啟硬件加速,因為它還依賴其他的設置

獲取是否支持硬件加速

//returns true if the View is attached to a hardware accelerated window.
View.isHardwareAccelerated()
//returns true if the Canvas is hardware accelerated
Canvas.isHardwareAccelerated() 

如果必須進行這樣的驗證,建議你在draw的代碼塊中使用:Canvas.isHardwareAccelerated(),因為如果一個View被attach到一個硬件加速的Window上,
即使沒有硬件加速的Canvas,它也是可以被繪制的。比如:將一個View以bitmap的形式進行緩存。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容