歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中不被硬件加速支持的操作

開啟硬件加速之後,Android中的2D渲染管道可以支持絕大部分常用的Canvas的繪畫操作函數以及那些很少被使用的操作函數。所有的那些用來呈現Android中的應用程序的繪畫操作、默認的部件和布局以及常見的高級視覺效果(比如反射和紋理)都被支持。以下列表是已知的不被硬件加速所支持的操作:
* Canvas
     ** clipPath()
     ** clipRegion()
     ** drawPicture()
     ** drawTextOnPath()
     ** drawVertices()
* Paint
     ** setLinearText()
     ** setMaskFilter()
     ** setRasterizer()
* Xfermodes
     ** AvoidXfermode
     ** PixelXorXfermode

而且,有些操作的效果在硬件加速之後會有變化。
* Canvas
     ** clipRect(): XOR, Difference 和 ReverseDifference 這三種裁剪模式被忽略。3D轉換不適用於修剪矩形
     ** drawBitmapMesh(): 顏色矩陣被忽略
* Paint
     ** setDither(): 被忽略
     ** setFilterBitmap(): 過濾一直處於開啟狀態
     ** setShadowLayer(): 只能和文字一起使用
* PorterDuffXfermode
     ** PorterDuff.Mode.DARKEN 等價於 SRC_OVER 如果幀緩沖區不支持混合
     ** PorterDuff.Mode.LIGHTEN 等價於 SRC_OVER 如果幀緩沖區不支持混合
     ** PorterDuff.Mode.OVERLAY 等價於 SRC_OVER 如果幀緩沖區不支持混合
* ComposeShader
     ** ComposeShader 僅能包含不同類型的著色器(比如包含一個 BitmapShader 的實例和一個 LinearGradient的實例是允許的,包含兩個 BitmapShader 的實例卻是不行的)
     ** ComposeShader 不能包含一個 ComposeShader

如果你的應用程序使用了以上不被支持或者是受限制的操作,你可以在使用了上述操作的View中調用setLayerType(View.LAYER_TYPE_SOFTWARE, null)來關閉硬件加速。這樣,你的程序在其他的地方依然可以享受硬件加速帶來的好處。

Copyright © Linux教程網 All Rights Reserved