自定義View的硬體加速問題
(建立於2017/1/19)
硬體加速
Android 3.0 (API level 11), 開始支援
所有的View 的canvas都會使用GPU,但是硬體的加速會佔有一定的RAM。
在API >= 14上,預設是開啟的,如果你的應用只是標準的View和Drawable,全域性都開啟硬體加速,是不會有任何問題的。
然而,硬體加速並不支援所有的2D畫圖的操作,這時開著它,可能會影響到你的自定義控制元件或者繪畫,出現異常等行為,
所以android對於硬體加速提供了可選性
如果你的應用執行了自定義的繪畫,可以通過在真機上測試開啟硬體加速查詢問題
硬體加速的級別
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級別開啟硬體加速,因為它還依賴其他的設定
兩種獲取是否支援硬體加速的方式
View.isHardwareAccelerated() //returns true if the View is attached to a hardware accelerated window.
Canvas.isHardwareAccelerated() //returns true if the Canvas is hardware accelerated
如果必須進行這樣的驗證,建議你在draw的程式碼塊中使用:Canvas.isHardwareAccelerated(),因為如果一個View被attach到一個硬體加速的Window上,
即使沒有硬體加速的Canvas,它也是可以被繪製的。比如:將一個View以bitmap的形式進行快取
相關文章
- 自定義VIEWView
- Android自定義View:View(二)AndroidView
- Android自定義View整合AndroidView
- 自定義View之SwitchViewView
- Android自定義view-自繪ViewAndroidView
- Flutter自定義View的實現FlutterView
- android自定義view(自定義數字鍵盤)AndroidView
- 【朝花夕拾】Android自定義View篇之(四)自定義View的三種實現方式及自定義屬性詳解AndroidView
- 自定義view————Banner輪播View
- Flutter 自定義繪製 ViewFlutterView
- Flutter自定義View(二)—— MultiChildRenderObejctWidgetFlutterView
- 重拾Android自定義ViewAndroidView
- Android自定義View:ViewGroup(三)AndroidView
- Android 自定義 View 之 LeavesLoadingAndroidView
- Android自定義View之Canvas的使用AndroidViewCanvas
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- 【朝花夕拾】Android自定義View篇之(十一)View的滑動,彈性滑動與自定義PagerViewAndroidView
- 自定義梯形view與XRecyclerView的結合View
- Android自定義View之分貝儀AndroidView
- 自定義View實用小技巧View
- 自定義View 之 RecyclerView.ItemDecorationView
- Android自定義View之捲尺AndroidView
- 利用Xfermode 自定義形狀ViewView
- 自定義View-波浪動效View
- 自定義View-扭曲動效View
- Android自定義View注意事項AndroidView
- Android自定義View-卷軸AndroidView
- Android自定義View 水波氣泡AndroidView
- Android 自定義View 點贊效果AndroidView
- 自定義view--鯨雲特效View特效
- Android 自定義View基礎(一)AndroidView
- 自定義View合輯(3)-下雨View
- android自定義View——座標系AndroidView
- Android自定義View之Window、ViewRootImpl和View的三大流程AndroidView
- 自定義View事件之進階篇(四)-自定義Behavior實戰View事件
- 自定義View事件篇進階篇(二)-自定義NestedScrolling實戰View事件
- 關於自定義View的drawText字型測量View
- 自定義View——仿騰訊TIM下拉重新整理ViewView