編輯:安卓省電與加速
在Android3.0後,Android的2D渲染通道開始支持硬件加速,也就是說所有View的Canvas繪畫動作都會使用GPU,同時也代表著應用程序會損耗更多的內存。而在Android4.0(API14)之後硬件加速功能就被默認開啟了。如果你的應用程序是由各種標准View和Drawable組成的,那麼硬件加速並不會引起任何不適。眾所周知,使用硬件加速會調用到OpenGL,但是OpenGL不同版本會存在不支持一些操作的情況,也就是說,硬件加速可能會影響一些自定義View及繪制過程。因此,Android系統提供了關閉硬件加速的方法,好的消息是,可以在不同層級上對硬件加速功能進行控制,而不至於整個應用程序因為某一個繪制動作的障礙而整體都不能使用硬件加速,畢竟硬件加速能夠帶來更加流暢、更加絢麗的界面效果。
PS:列表有錯位,標題向後移動一個
API level
< 16
16
17
18
Canvas
drawBitmapMesh() (colors array)
?
?
?
?
drawPicture()
?
?
?
?
drawPosText()
?
?
?
?
drawTextOnPath()
?
?
?
?
drawVertices()
?
?
?
?
setDrawFilter()
?
?
?
?
clipPath()
?
?
?
?
clipRegion()
?
?
?
?
clipRect(Region.Op.XOR)
?
?
?
?
clipRect(Region.Op.Difference)
?
?
?
?
clipRect(Region.Op.ReverseDifference)
?
?
?
?
clipRect() with rotation/perspective
?
?
?
?
Paint
setAntiAlias() (for text)
?
?
?
?
setAntiAlias() (for lines)
?
?
?
?
setFilterBitmap()
?
?
?
?
setLinearText()
?
?
?
?
setMaskFilter()
?
?
?
?
setPathEffect() (for lines)
?
?
?
?
setRasterizer()
?
?
?
?
setShadowLayer() (other than text)
?
?
?
?
setStrokeCap() (for lines)
?
?
?
?
setStrokeCap() (for points)
?
?
?
?
setSubpixelText()
?
?
?
?
Xfermode
AvoidXfermode
?
?
?
?
PixelXorXfermode
?
?
?
?
PorterDuff.Mode.DARKEN (framebuffer)
?
?
?
?
PorterDuff.Mode.LIGHTEN (framebuffer)
?
?
?
?
PorterDuff.Mode.OVERLAY (framebuffer)
?
?
?
?
Shader
ComposeShader inside ComposeShader
?
?
?
?
Same type shaders inside ComposeShader
?
?
?
?
Local matrix on ComposeShader
?
?
?
?
以上就是硬件加速對於一些繪制行為在那些API等級上支持和不支持的列表,同樣的行為在不同的API等級平台上會有存在不同的情況,這是因為不同平台擁有不同的OpenGL版本。
引言中說過控制硬件加速可以在不同層級進行,這樣可以避免因為一個繪制動作不支持而導致整個應用都不可以使用硬件加速這樣很愚蠢的情況發生。總共有四個層級,從上到下是:
1. Application
應用程序等級控制硬件加速,在AndroidManifest.xml中進行:
2. Activity
Activity等級的控制方法還是在AndroidManifest.xml中進行,如下展示了應用整體使用硬件加速,而某一個Activity不使用的例子:
3. Window
窗口級控制,如果只是想讓某個窗口使用硬件加速:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
4. View
可以通過代碼在運行時控制單個View是否使用硬件加速:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
何時關閉?關閉誰?
可以通過
View.isHardwareAccelerated()和
Canvas.isHardwareAccelerated()檢測其是否在使用硬件加速。如果是自定義View,通過復寫onDraw改變Canvas內容,那麼最好的檢測Canvas而非View,即使一個View被放置到了使用硬件加速的Window中,View本身及Canvas仍然可以不使用硬件加速功能。所以,在合適的位置進行關閉,關閉該關閉的那個對象很重要。
打開OPPO Find7手機【設置】在【常規】欄目中找到並點擊【電量管理】,將【省電模式】開啟後,點擊【省電設置】。(如下圖) 2)找到【深度省電選項
智能手機的快速發展讓手機的硬件有了很大的提升,不過這電池一直是大家都頭疼的,手機配置原來越高,這電池的續航時間卻一
有不少的朋友都反應三星S4耗電太快了,不用太擔心,這或許是你的設置有有誤才造成三星S4太過耗電,其實通過正確的省
小編今天發現了一篇相當不錯的的安卓手機省電技巧,手機沒電的痛苦。相信有不少拿著智能手機的同學也有著相同的感受吧~下面就來看看,待機9小時耗電僅2%!下文不光適