Hardware Acceleration

来源:互联网 发布:加湿器推荐 知乎 编辑:程序博客网 时间:2024/05/21 09:17
Hardware Acceleration
从Android3.0(API版本11)开始,Android 2D渲染管线设计的更好来支持硬件加速。硬件加速使得所有在View的Canvas上的的绘制操作都通过GPU来完成。由于使能硬件加速需要更多的资源,你的应用将会消耗更多的RAM.
最简单的使能硬件加速的方法是全局的为所有应用打开硬件加速。如果你的应用只使用标准的Views和Drawables,全局的打开他也不会对绘制产生任何不利的影响。但是,由于硬件加速并不支持所有的2D绘制操作,如果你的应用使用一些自定义的View或者绘制接口,打开硬件加速可能会对你的应用产生影响。产生的问题可能是不可见的成员,异常或者错误的渲染像素。要解决此问题,Android提供了如下层次的使能和不使能硬件加速的选项:
应用层
Activity层
Window层
View层
如果你的应用需要自定义的绘制,打开硬件加速来测试你的应用在真实的硬件设备上是否有任何文件。Unsupported drawing operations 章节描叙了不能使用硬件加速的已知的问题以及如何解决他们。
Controlling Hardware Acceleration(控制硬件加速)
你可以在如下层次控制硬件加速
Application
Activity
Window
View
Application level
在你的AndroidManifest.xml文件中,在<application>标记添加如下属性来为你的整个应用使能硬件加速
<application android:hardwareAccelerated="true" ...>
Activity level
如果当应用在全局打开硬件加速时并不能正常的工作,你同样也可以对个别的activity进行控制。要在Activity层使能或者不使能硬件加速,你可以为<activity>元素使用android:hardwareAccelerated属性,如下的实例为整个应用使能硬件加速但是为某一个acitivty不使能硬件加速。
<application android:hardwareAccelerated="true">    <activity ... />    <activity android:hardwareAccelerated="false" /></application>
Window level

如果你需要更好的控制,你可以为某个View通过如下代码使能硬件加速:

getWindow().setFlags(    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注意:当前不能在Window层不使能硬件加速。
View level
你可以在运行的时候通过如下代码为某个View不使能硬件加速

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
注意:当前还不支持在View层使能硬件加速。View层有其他的函数来不使能硬件加速。查看View layers来获取更多的信息



0 0
原创粉丝点击