硬件加速:
原理:调用GPU代替CPU完成绘制的计算工作,从工作分摊和绘制机制优化来提升绘制速度。
缺点:受到GPU绘制方式的限制,Canvas有些方法在硬件加速开启的时候会失效或者无法正常工作,所以在自定义控件的绘制操作中可以手动地去关闭硬件加速
view.setLayerType(LAYER_TYPE_SOFTWARE, null);
加大内存的使用,所以内存紧张的时候不要使用,避免内存溢出
硬件开启的四个级别:
Application
Activity
Window
View
Application开启硬件加速方式:
<application android:hardwareAccelerated="true" ...>
Activity开启硬件加速方式
<activity android:hardwareAccelerated="false" />
Window开启硬件加速方式
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
View关闭硬件加速方式
可以关闭View级别的硬件加速,但是不能在View级别开启硬件加速因为它依赖其它的设置
mView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
获取是否支持硬件加速方法
//returns true if the View is attached to a hardware accelerated window
View.isHardwareAccelerated()
// returns true if the Canvas is hardware accelerated
Canvas.isHardwareAccelerated()
有绘制方法对应表格可查看,如clipath()在18以上的系统才生效