歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android中不被硬件加速支持的操作

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

日期:2017/3/1 10:15:08   编辑:Linux編程

開啟硬件加速之後,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