hardware acceleration硬件加速

hardware acceleration硬件加速

ID:15609751

大小:107.00 KB

页数:6页

时间:2018-08-04

hardware acceleration硬件加速_第1页
hardware acceleration硬件加速_第2页
hardware acceleration硬件加速_第3页
hardware acceleration硬件加速_第4页
hardware acceleration硬件加速_第5页
资源描述:

《hardware acceleration硬件加速》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、HardwareAcceleration硬件加速HardwareAcceleration从Android3.0(APIlevel11)开始,Android2D渲染管线能更好的支持硬件加速。硬件加速通过GPU执行各种绘画操作。因为硬件加速需要消耗更多的资源,所以你的App需要更多的RAM。开启硬件加速最简单的方法是在整个应用全局设置。如果应用只使用标准的View和Drawable,全局设置不会产生不利的影响。然而,因为硬件加速不支持所有的2D绘制操作,开启会影响一些自定义View或者绘制调用。问题显示为不可见的元素、异常,或者错误渲染

2、像素。为了补救这些,Android提供给你选项开启或者关闭硬件加速在以下几个层面:·Application·Activity·Window·View如果你的应用执行自定义绘制,开启硬件加速,测试应用在实际的硬件设备上去查找问题。控制硬件加速你可以在以下层面控制硬件加速·Application·Activity·Window·ViewApplication层在你的Androidmanifest文件里,添加以下属性到标签里,针对整个应用开启硬件加速:

3、elerated="true"...>Activity层如果整个应用开启硬件加速表现的不稳定,你也可以针对单个Activity进行控制。在Activity层开启或者关闭硬件加速,你可以使用android:hardwareAccelerated属性在标签内。下面是单个Activity中关闭硬件加速的例子:

4、Window层如果你需要更细致的控制,可以在获得的Window里开启硬件加速:getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);·注:在window层不能取消硬件加速。View层通过下面代码,你可以在运行时关闭硬件加速:myView.setLayerType(View.LAYER_TYPE_SOFTWA

5、RE,null);注:你不能在view层开启硬件加速。View面板有其他方法关闭硬件加速。更多详细内容请看View面板。判断View是否已经硬件加速有时候,知道一个应用当前是否硬件加速是非常有用的,尤其像自定义View。这非常有用,当你的应用做大量的自定义绘制并且不是所有操作都支持新的渲染管道。有两个方法查看应用是否硬件加速:·View.isHardwareAccelerated() 如果View附属于硬件加速的窗体,将会返回true。·Canvas.isHardwareAccelerated() 如果Canvas已硬件加速,将会返

6、回true。如果你一定要在绘制代码中进行这个查看,请尽可能用Canvas.isHardwareAccelerated()代替View.isHardwareAccelerated()。当一个View附属于硬件加速窗体,它仍可以通过非硬件加速的Canvas来绘制。这种情况,在实例化时,绘制一个View到bitmap中,为了缓存目的。Android绘画模型当开启硬件加速,新的绘画模型利用显示列表在界面上渲染你的应用。为了完全理解显示列表和对你的应用有怎样的影响,知道Android不通过硬件加速怎么样绘制View也很重要。下面的篇章阐述基于

7、软件和基于硬件的绘画模型。基于软件的绘画模型在软件绘画模型中,View通过以下两个步骤被绘制:·使层次失效·绘制层次每当应用需要更新部分UI时,调用invalidate()(或者它的变形)在任意需要改变内容的view里。这些失效信息被传播始终在view层,计算需要重绘的界面区域。然后,Android系统绘制任意view在这些区域。不幸的是,这种模型有两个缺点:·第一,这种模型需要执行的大量的代码在每一次绘画。比如,如果你的应用在按钮里调用了invalidate() ,而且这个按钮在另外一个view之上,此时Android系统会重绘这

8、个view,即时它没有发生改变。·第二个问题是绘画模型会隐藏你应用的错误。从Android系统开始重绘view,当他们与脏区域融合时,你改变的view的内容可能会被重绘即时invalidate()没有被调用。此时,你依赖于另外一个vi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。