详解Android开发中硬件加速支持的使用方法

2019-12-10 19:02:09王冬梅

控制硬件加速开关

引言中说过控制硬件加速可以在不同层级进行,这样可以避免因为一个绘制动作不支持而导致整个应用都不可以使用硬件加速这样很愚蠢的情况发生。总共有四个层级,从上到下是:
1. Application
应用程序等级控制硬件加速,在AndroidManifest.xml中进行:

<application android:hardwareAccelerated="true" ...> 

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

2. Activity
Activity等级的控制方法还是在AndroidManifest.xml中进行,如下展示了应用整体使用硬件加速,而某一个Activity不使用的例子:

<application android:hardwareAccelerated="true"> 
 <activity ... /> 
 <activity android:hardwareAccelerated="false" /> 
</application> 


3. Window
窗口级控制,如果只是想让某个窗口使用硬件加速:

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


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

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);