关于android 手机硬件加速问题
关于安卓手机的硬件加速问题
分类: Android基础 2012-04-12 14:44 740人阅读 评论(0) 收藏 举报
最近听同事讨论硬件加速问题,完全不懂。于是乎,百度了下,原来从3.0开始,安卓开始支持硬件加速,手机自然是从4.0开始支持的了。而且配置方法一种是在代码中配置硬件加速,这个也分很多个级别,在minifest中;一种方式是在手机的开发人员选项中启用硬件加速,不过似乎只有google的nexus有这个选项,其它的手机都别屏蔽了。 硬件加速的官方文档:http://developer.android.com/guide/topics/graphics/hardware-accel.html 开启硬件加速有两种大的途径 1.在系统设置“开发人员……”中勾选启用GPU加速 2.在应用程序中启用硬件加速 目前遇到的问题有,启用硬件加速后,WebView的性能受到一定影响,设置背景透明无效。 目前4.0的系统有硬件加速,之前的版本不太清楚。 我们来看怎样在程序中启用硬件加速
这是,Window级别的硬件加速就启动了。 对于已经在系统设置项中开启硬件加速,但是硬件加速会给应用程序带来问题的情况,可以使用如下方法为应用程序View级别取消硬件加速
这里有篇非常棒的文章: 转载时请注明出处和作者联系方式: http://mogoweb.net/archives/%E2%80%9Dhttp://mogoweb.net%E2%80%9D mogoweb@gmail.com 本文的主要内容来自SDK文章的"Hardware Acceleration”. 从Android 3.0开始,Android的2D渲染管线可以更好的支持硬件加速。硬件加速使用GPU进行View上的绘制操作。 硬件加速可以在一下四个级别开启或关闭:
Application级别往您的应用程序AndroidManifest.xml文件为application标签添加如下的属性即可为整个应用程序开启硬件加速: <application android:hardwareAccelerated="true" ...> Activity级别您还可以控制每个activity是否开启硬件加速,只需在activity元素中添加android:hardwareAccelerated属性即可办到。比如下面的例子,在application级别开启硬件加速,但在某个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级别您可以在运行时用以下的代码关闭单个view的硬件加速: myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 注:您不能在view级别开启硬件加速 为什么需要这么多级别的控制?很明显,硬件加速能够带来性能提升,android为什么要弄出这么多级别的控制,而不是默认就是全部硬件加速呢?原因是并非所有的2D绘图操作支持硬件加速,如果您的程序中使用了自定义视图或者绘图调用,程序可能会工作不正常。如果您的程序中只是用了标准的视图和Drawable,放心大胆的开启硬件加速吧!具体是哪些绘图操作不支持硬件加速呢:
另外还有一些绘图操作,开启和不开启硬件加速,效果不一样:
Android的绘制模型开启硬件加速后,Android框架将采用新的绘制模型。基于软件的绘制模型和基于硬件的绘制模型有和不同呢? 基于软件的绘制模型在软件绘制模型下,视图按照如下两个步骤绘制: 1. Invalidate the hierarchy(注:hierarchy怎么翻译?) 2. Draw the hierarchy 应用程序调用invalidate()更新UI的某一部分,失效(invalidation)消息将会在整个视图层中传递,计算每个需要重绘的区域(即脏区域)。然后Android系统将会重绘所有和脏区域有交集的view。很明显,这种绘图模式存在缺点: 1. 每个绘制操作中会执行不必要的代码。比如如果应用程序调用invalidate()重绘button,而button又位于另一个view之上,即使该view没有变化,也会进行重绘。 2. 可能会掩盖一些应用程序的bug。因为android系统会重绘与脏区域有交集的view,所以view的内容可能会在没有调用invalidate()的情况下重绘。这可能会导致一个view依赖于其它view的失效才得到正确的行为。 基于硬件的绘制模型Android系统仍然使用invalidate()和draw()来绘制view,但在处理绘制上有所不同。Android系统记录绘制命令到显示列表,而不是立即执行绘制命令。另一个优化就是Android系统只需记录和更新标记为脏(通过invalidate())的view。新的绘制模型包含三个步骤: 1. Invalidate the hierarchy 2. 记录和更新显示列表 3. 绘制显示列表 |
关于android 手机硬件加速问题相关推荐
- ART简单体验和Android图形硬件加速分析
原文链接:http://www.soomal.com/doc/10100004760.htm 平均/总评分:08.02/505 相关资料 收藏此图 相关图片 Android ART Android A ...
- Android HWUI硬件加速模块浅析
原址 什么是硬件加速(What) 传统软件的UI绘制是依靠CPU来完成的,硬件加速就是将绘制任务交由GPU来执行.Android系统负责硬件加速的模块主要是HWUI,如下图所示: 为什么要硬件加速(W ...
- android开发 硬件加速,Android 开发之硬件加速
(1)定义 所谓硬件加速,指的是把某些计算工作交给专门的硬件来做,而不是和普通的计算工作一样交给 CPU 来处理.这样不仅减轻了 CPU 的压力,而且由于有了专门硬件的处理,这份计算工作的速度也被加快 ...
- android 加速 图像处理,Android之硬件加速
所谓硬件加速,指的是把某些计算工作交给专门的硬件来做,而不是和普通的计算工作一样交给CPU 来处理.这样不仅减轻了 CPU 的压力,而且由于有了「专人」的处理,这份计算工作的速度也被加快了.这就是「硬 ...
- Android 模拟器硬件加速
转载自: https://software.intel.com/en-us/blogs/2012/03/12/how-to-start-intel-hardware-assisted-virtuali ...
- android view硬件加速,Android TextureView和硬件加速
我正在尝试实现 this page上显示的示例.我已经尝试了运行android 4及更高版本的三个不同设备,并且在所有情况下,我都会看到带有此警告的黑屏: 01-27 20:01:22.683: W/ ...
- Android 关闭硬件加速时,导致一些问题
当我们在中配置AndroidManifest中配置硬件加速 android:hardwareAccelerated="false",此时硬件加速已关闭,在我的开发过程中,我发现关闭 ...
- android 关闭硬件加速
特别在自定义View的时候,会需要将android机子的硬件加速关掉,这时候可能想到的就是在AndroidManifest.xml的中设置android:hardwareAccelerated=&qu ...
- Android 关闭硬件加速功能
关闭某一个控件的硬件加速功能 findViewById(R.id.btn).setLayerType(View.LAYER_TYPE_SOFTWARE,null); 关闭一个Activity的硬件加速 ...
最新文章
- 【html】【13】特效篇--下拉导航
- 2021第12届蓝桥杯省赛 -- 填空题:试题B:直线
- kickstart自动化安装
- 木兰编程语言python_国产编程语言木兰换皮Python 中科院重罚当事人
- uipath sequence传递参数_多孔材料测试及声学参数识别(中)_多孔材料声学参数正向识别...
- Linux目录的可写意味着,Linux权限分析 - osc_h5427nyq的个人空间 - OSCHINA - 中文开源技术交流社区...
- python学习之路-day8
- anaconda中安装xgboost_在windows64位Anaconda3环境下安装XGBoost
- web.config从.net framework3.5向4.0迁移注意事项
- 如何c语言看字节大小,如何计算C语言结构占用的字节数
- 【Appdata】appdata文件夹太大,移动到D盘。
- Cesium 加载实景三维模型 优化建议
- 与计算机相关的潜在健康风险是什么,医疗安全与风险管理.新.ppt
- 英特尔 back,全新架构 coming
- Cropper使用(图片裁切)
- ubuntu16.04对比工具Meld安装和使用
- Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况(一)
- HDU 4417 Super Mario(离线线段树or树状数组)
- 如何让邮件变的更安全?邮箱安全中心在哪里?
- 安卓手机主题软件_安卓手机数据恢复软件——FonePaw Android Data Recovery Mac