android從3.0(api level 11)開始,在繪製view的時候支援硬體加速,充分利用gpu的特性,使得繪製更加平滑,但是會多消耗一些記憶體。
開啟或關閉硬體加速:
由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速:
activity級別:
window級別:
getwindow().setflags(注意:目前為止,android還不支援在window級別關閉硬體加速。windowmanager.layoutparams.flag_hardware_accelerated,
windowmanager.layoutparams.flag_hardware_accelerated);
view級別:
myview.setlayertype(view.layer_type_hardware, null);注意:目前為止,android還不支援在view級別開啟硬體加速。
檢測當前是否啟用了硬體加速:
//理解view的繪製模型:方法一//
此方法返回true,如果myview掛在乙個開啟了硬體加速的window之下,
//也就是說,它在繪製的時候不一定使用了硬體加速,getdrawingcache
myview.ishardwareaccelerated();
//方法二
//返回true,如果canvas在繪製的時候啟用了硬體加速
//盡量採用此方法來判斷是否開啟了硬體加速
canvas.ishardwareaccelerated();
1.沒有硬體加速:invalidate the view hierarchy ------> draw the view hierarchy
2.有硬體加速:invalidate the view hierarchy ------> record and update the display list ------> draw the display list
硬體加速的限制:
目前,android對硬體加速的支援並非完美,有些繪製操作在開啟硬體加速的情況下不能正常工作(具體的列表可以參考android開發者文件)。
不過android可以保證內建的元件和應用支援硬體加速。因此,如果應用中只使用了標準ui元件,可以放心開啟硬體加速。
隨著android的版本公升級,相信一段時間之後,硬體加速可以得到完美的支援。
開啟硬體加速之後的異常反應:
1.某些ui元素沒有顯示:可能是沒有呼叫invalidate
2.某些ui元素沒有更新:可能是沒有呼叫invalidate
3.繪製不正確:可能使用了不支援硬體加速的操作, 需要關閉硬體加速或者繞過該操作
4.丟擲異常:可能使用了不支援硬體加速的操作, 需要關閉硬體加速或者繞過該操作
本文基本上是按照android開發者文件來寫的,具體細節可以參考這裡
Android 硬體加速
開啟或關閉硬體加速 由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速 activity級別 window級別 getwindow setflags windowmanager.layoutparams.flag hard...
Android硬體加速
android從3.0 apilevel11 開始,在繪製view的時候支援硬體加速,充分利用gpu的特性,使得繪製更加平滑,但是會多消耗一些記憶體。開啟或關閉硬體加速 由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速 ...
Android硬體加速
從android3.0 api level 11 開始,支援硬體加速,可充分利用gpu的特性,使得介面渲染更加平滑。但是硬體加速自身並非完美,在某些webview版本上,比如android5初期的一些rom上的webview版本是chrome37 38版本,由於其本身的硬體加速策略的bug,導致 稍...