HardwareAcceleration硬件加速..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HardwareAcceleration硬件加速.

Hardware Acceleration硬件加速 Hardware Acceleration 从Android 3.0 (API level 11)开始,Android 2D渲染管线能更好的支持硬件加速。硬件加速通过GPU执行各种绘画操作。因为硬件加速需要消耗更多的资源,所以你的App需要更多的RAM。 开启硬件加速最简单的方法是在整个应用全局设置。如果应用只使用标准的View和Drawable,全局设置不会产生不利的影响。然而,因为硬件加速不支持所有的2D绘制操作,开启会影响一些自定义View或者绘制调用。问题显示为不可见的元素、异常,或者错误渲染像素。为了补救这些,Android提供给你选项开启或者关闭硬件加速在以下几个层面: Application Activity Window View 如果你的应用执行自定义绘制,开启硬件加速,测试应用在实际的硬件设备上去查找问题。 控制硬件加速 你可以在以下层面控制硬件加速 Application Activity Window View Application 层 在你的Android manifest文件里,添加以下属性到application标签里,针对整个应用开启硬件加速: application android:hardwareAccelerated=true ... Activity 层 如果整个应用开启硬件加速表现的不稳定,你也可以针对单个Activity进行控制。在Activity层开启或者关闭硬件加速,你可以使用android:hardwareAccelerated属性在activity标签内。下面是单个Activity中关闭硬件加速的例子: application android:hardwareAccelerated=true activity ... / activity android:hardwareAccelerated=false / /application Window 层 如果你需要更细致的控制,可以在获得的Window里开启硬件加速: getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 注: 在window层不能取消硬件加速。 View 层 通过下面代码,你可以在运行时关闭硬件加速: myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 注:你不能在view层开启硬件加速。 View面板有其他方法关闭硬件加速。更多详细内容请看View面板。 判断View是否已经硬件加速 有时候,知道一个应用当前是否硬件加速是非常有用的,尤其像自定义View。这非常有用,当你的应用做大量的自定义绘制并且不是所有操作都支持新的渲染管道。 有两个方法查看应用是否硬件加速: View.isHardwareAccelerated()?如果View附属于硬件加速的窗体,将会返回true。 Canvas.isHardwareAccelerated()?如果Canvas已硬件加速,将会返回true。 如果你一定要在绘制代码中进行这个查看,请尽可能用Canvas.isHardwareAccelerated()代替View.isHardwareAccelerated()。当一个View附属于硬件加速窗体,它仍可以通过非硬件加速的Canvas来绘制。这种情况,在实例化时,绘制一个View到bitmap中,为了缓存目的。 Android绘画模型 当开启硬件加速,新的绘画模型利用显示列表在界面上渲染你的应用。 为了完全理解显示列表和对你的应用有怎样的影响,知道Android不通过硬件加速怎么样绘制View也很重要。下面的篇章阐述基于软件和基于硬件的绘画模型。 基于软件的绘画模型 在软件绘画模型中,View通过以下两个步骤被绘制: 使层次失效 绘制层次 每当应用需要更新部分UI时,调用invalidate()(或者它的变形)在任意需要改变内容的view里。这些失效信息被传播始终在view层,计算需要重绘的界面区域。然后,Android系统绘制任意view在这些区域。不幸的是,这种模型有两个缺点: 第一,这种模型需要执行的大量的代码在每一次绘画。比如,如果你的应用在按钮里调用了invalidate()?,而且这个按钮在另外一个view之上,此时Android系统会重绘这个view,即时它没有发生改变。 第二个问题是绘画模型会隐藏你应用的错误。从Android系统开始

文档评论(0)

bhzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档