绘图与硬件加速:

在Android 3.0后,Android的2D渲染通道开始支持硬件加速,意味着所有View的Canvas绘画动作都会使用GPU启用硬加速,使用GPU的特性,可以使得界面渲染更加平滑,在4.0之后更是默认开启了硬件加速,
但是硬加速不是被所有的2D绘制所支持,并且会消耗更多内存RAM,并且由于硬件加速属于双缓冲机制,使用显存进行页面渲染,这导致了更频繁的显存操作,可能引起白屏、花屏、闪屏的现象。甚至在低RAM内存配置手机上闪退。
一般可以通过如下两种方法解决这类问题。
1.降低页面的内存占用,给硬件加速腾出RAM
2.在适当的地方关闭硬件加速。
前者操作起来比较麻烦,因此在可能的情况下最优先选择的是关闭硬件加速。

不过不支持仅仅是针对自定义View Android可以保证内置的组件和应用支持硬件加速,因此,如果应用中只使用了标准UI组件,可以放心开启硬件加速。
下面介绍下如何在各个层级中关闭硬件加速:

  1. Application 应用程序等级控制硬件加速,在AndroidManifest.xml中添加:
<application android:hardwareAccelerated="true" ...>  
  1. Activity Activity等级的控制还是在AndroidManifest.xml中进行控制:
<application android:hardwareAccelerated="true">  
<activity ... />
<activity android:hardwareAccelerated="false" />
</application>
  1. Window 窗口级控制:

    getWindow().setFlags(  
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
  2. View 在运行时控制单个View是否使用硬件加速:

setLayerType(View.LAYER_TYPE_SOFTWARE, null);  LAYER_TYPE_HARDWARE即为使用硬件加速(GPU),LAYER_TYPE_SOFTWARE使用CPU进行绘制。

检测当前View或者Canvas是否使用硬件加速
View.isHardwareAccelerated()
Canvas.isHardwareAccelerated()

Contents
  1. 1. 绘图与硬件加速: