不被硬件加速所支持的绘图操作
在硬件加速的时候,2D渲染管道支持大多数的通常用于Canvas的绘图操作,以及一些很少使用的操作。被用于渲染应用程序的所有的绘图操作都有发送给Android系统,默认的Widget和布局,以及一些常用的可视效果,如反射和瓷砖的纹理效果都是被支持的。以下列出了已知的不支持硬件加速的操作:
1.Canvas
chipPath()
chipRegion()
drawPicture()
drawPosText()
drawTextOnPath()
drawVertives()
2.Paint
setLinearText()
setMaskFilter()
setRasterizer()
另外,还有一些操作行为会因启用了硬件加速而不同:
1.Canvas
clipRect():硬件加速会忽略XOR、Difference和ReverseDifference三种剪辑模式,3D变换不适用于剪辑矩形。
drawBitmapMesh():硬件加速会忽略颜色数组。
drawLines():硬件加速不支持抗锯齿处理。
setDrawFilter():硬件加速能够被设置,但是会被忽略。
2.Paint
setDither():硬件加速会忽略其设置。
setFilterBitmap():位图过滤是始终打开的。
setShadowLayer():该项设置只对文本有效。
3.ComposeShader
ComposeShader对象只能包含不同类型的着色器(例如,BitmapShader和LinearGradient,但是不能够包含两个BitmapShader对象的实例)。
ComposeShader对象不能够包含一个ComposeShader对象。
如果应用程序受到这些错误的功能或限制的影响,那么能够通过调用setLayerType(View.LAYER_TYPE_SOFTWARE, null)方法针对应用程序受到影响的部分来关闭硬件加速。这种方法,依然还能够在其他的地方利用硬件加速。