admin 管理员组

文章数量: 1184232

硬件加速的含义:

Canvas 使用 GPU 图形处理器)对 View 进行 绘制操作。 硬件加速主要应用于图像的绘制。

硬件加速的特点:

硬件加速能够带来性能的提升。硬件加速使得 View 绘制更加平滑,图形绘制速度加快;但是会多消耗一些内存,耗电量加大。

1 、由于硬件加速自身并非完美无缺,所以 Android 提供选项来打开或者关闭硬件加速,默认是关闭。

2 、硬件加速分为四个级别:在清单文件中进行配置

1 Application 级别控制硬件加速: <application android:hardwareAccelerated="true" ...>

Android4.0 以上(包含)默认就为 true ,即开启。如果整个应用都不想用硬件加速,则手动设定为 false

2 Activity 级别控制硬件加速: <activity android:hardwareAccelerated="false" ...> 设置为 false ,表示关闭硬件加速。

3 Window 级别控制硬件加速:

getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

4 )可以通过代码在运行时控制单个 View 是否使用硬件加速:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

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

当前, Android 对硬件加速的支持并非完美,有些绘制操作在开启硬件加速的情况下不能正常工作,会出现各种问题。不过 Android 可以保证内置的组件和应用支持硬件加速(原生控件是可以开启硬件加速的)。因此,如果应用中只使用了标准 UI 组件,可以放心开启硬件加速。

开启硬件加速可能出现的异常现象:核心就是图像在 Canvas 上不能正常绘制。

1 UI 元素不显示,不更新,绘制错误,抛出异常(可能使用了不支持硬件加速的操作, 需要关闭硬件加速或者绕过该操作)

android 为什么要弄出这么多级别的控制,而不是默认就是全部硬件加速呢?原因是并非所有的 2D 绘图操作支持硬件加速,如果在程序中使用了自定义视图或者绘图调用,程序可能会工作不正常。如果程序中只是用了标准的视图和 Drawable ,这样就没有问题。

本文标签: 硬件加速 级别控制 加速