Hardware Acceleration

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来获取更多的信息



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值