安卓硬件加速

硬件加速的含义:

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

 

硬件加速的特点:

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

 

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

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

1Application级别控制硬件加速:

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

2Activity级别控制硬件加速:设置为false,表示关闭硬件加速。

3Window级别控制硬件加速:

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上不能正常绘制。

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

 

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

你可能感兴趣的:(安卓硬件加速)