从Android3.0(Api 11)开始支持硬件加速。
所有的View的canvas都会占用GPU,但是硬件加速则会占用一定的RAM。
在API >= 14时,默认是开启硬件加速的。如果全局都使用标准的View和Drawable,则不会有任何问题。
但是,硬件加速不支持所有的2D的画图操作,这个情况下如果开启硬件加速,可能会出现问题或导致异常发生。
因此,Android对于硬件加速提供了可选性。
硬件加速的级别:
1. Application
<application
android:hardwareAccelerated="false"
...>
</application
2. Activity
<application
android:hardwareAccelerated="true"
...>
<activity android:hardwareAccelerated="false"/>
</application
3. Window
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
4. View
mView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
注:在View中可以关闭硬件加速,但是不能开启View级别的硬件加速,因为它会受到别的设置影响。
获取到是否支持硬件加速的方法:
1. View.isHardwareAccelerated();
2. Canvas.isHardwareAccelerated();
注:一个View,即使它的Canvas没有开启硬件加速,但是它仍然可以被绘制到开启了硬件加速的Window上。
网友评论