1)問題:
Android開發中某個界面出現了花屏,某些控件背景被拉伸過多遮住了其他控件。
2)原因:
硬件加速引起。
具體分析:Android從3.0開始引進硬件加速,4.0開始硬件加速在Application層默認開啓,硬件加速使用GPU進行繪圖,旨在得到更加平滑的動畫和更加平滑的滾動,和更好的總體性能和相應用戶的交互。但是硬件加速並不能完美的支持所有的繪圖,不能支持的通常表現爲內容不可見、異常或者渲染錯誤。
3)關閉/打開方法:
1、Application層(可關閉、可打開,4.0以上默認打開):
在Manifest文件中進行關閉如下:
<application android:hardwareAccelerated="true" ...>
2、Activity層(可關閉、可打開):
在Manifest文件中進行關閉如下:
<activity android:hardwareAccelerated="false" />
3、Window層(只能打開):
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
4、View層(只能關閉,決定權最高,可覆蓋上面的三個權限):
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
4)判斷是否採用了硬件加速:
1、View:
view.isHardwareAccelerated();
2、Canvas:
canvas.isHardwareAccelerated();