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();