文档章节

Android学习——控制硬加速 hardwareAccelerated

Jonson
 Jonson
发布于 2014/05/15 13:17
字数 800
阅读 154
收藏 1

Android学习——控制硬加速  hardwareAccelerated 在3.0才有的。            

       分类:            android学习            2012-04-27 13:59    8742人阅读    评论(4)    收藏    举报    

androidapplicationapinull测试

从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作.

  启用硬加速最简单的的方法是对整个应用启用硬件速.如果你的应用只使用标准的view和Drawable,全局启用硬加速将不会带来任何负面影响.然 而,因为硬加速不是被所有的2D绘制所支持,所以启用它时可能对你的自定义绘制产生影响.出现的问题经常是不可见的,也可能是异常,或错误地显示了像素. 为了避免这些问题,Android提供了在以下各级别上启用或禁止硬加速的能力:

Application

Activity

Window

View

  如果你的应用使用了自定义绘制,需要在真实的设备上启用硬加速进行测试来找出问题."不支持的绘制操作"一节描述了已知的不能被硬加速的绘制操作以及如何避开它们.

 

 

控制硬加速

  你可以在以下级别上分别控制硬加速:

Application

Activity

Window

View

 

Application级
  在你的manifest文件中,把以下属性添加到<application>标签来对你的整个应用启用硬加速:

<applicationandroid:hardwareAccelerated="true" ...>

Activity级
  如果你的应用在全局启用硬加速时行为不正确,你可以对个别activities单独启用硬加速.欲在actvity级别启用或禁止硬加速,你可以 对<activity>元素使用android:hardwareAccelerated属性.下面的例子在整个应用中启用了硬加速但对一个 activity禁止了硬加速:

<applicationandroid:hardwareAccelerated="true">

<activity... />

<activityandroid:hardwareAccelerated="false" />

</application>

Window级
  如果你需要更高颗粒度的控制,你可以使用以下代码为一个window启用硬加速:

getWindow().setFlags(

WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,

WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

 

 

注:现在你还不能在window级别禁止硬加速.

 


Viewlevel

你可以在运行时使用以下代码禁止个别的View的硬加速:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

 


注:当前你不能在View级别启用硬加速.View层有除禁止硬加速之外的其它功能.

 

 

判定一个View是否能被硬加速

  有时一个应用了解是否启用了硬件速是很有用的,对那些自定义View之类的东西尤其重要.在你的应用做了一些不被最新的管线所支持的自定义绘制时这更加重要.

 

  有两种方法可以检查应用是否被硬加速:

View.isHardwareAccelerated():如果View附加到一个硬加速的window上就返回true.

Canvas.isHardwareAccelerated():如果Canvas被硬加速了就返回true.

 

  如果你必须在你的绘制代码中做这个,应使用Canvas.isHardwareAccelerated()而不是 View.isHardwareAccelerated().当一个view附加到一个硬加速的window上,它仍可以使用非硬件速的Canvas进行 绘制操作.比如当为了高速缓存而把一个view画到一个bitmap中.


本文转载自:http://blog.csdn.net/janronehoo/article/details/7517284

Jonson
粉丝 21
博文 131
码字总数 17942
作品 0
肇庆
私信 提问
Android开发_控制硬加速hardwareAccelerated

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangty0223/article/details/10694783 控制硬加速 hardwareAccelerated 也是一种优化的手段 从Android3.0 (A...

张腾元_Ternence
2013/08/30
0
0
安卓 清单文件(AndroidManifest.xml)知识点扫盲

1、android:excludeFromRecents="true" 是否允许在最近打开的activity列表(查看后台运行程序)中显示,true表示不允许,默认是false,允许 2、android:screenOrientation="portrait" activi......

Carbenson
2018/11/05
42
0
Android Crash问题

-- TimeoutException: com.android.org.conscrypt.OpenSSLDigestContext.finalize() timed out after 120 seconds- https://github.com/google/conscrypt/issues/546 https://github.com/goo......

desaco
03/03
0
0
listView 加载图片过多,滑动时 较阻塞,如何解决?

问:listView 加载图片过多,滑动时 较阻塞,如何解决? 答:方法一:控制硬加速。你可以在以下级别上分别控制硬加速:Application、Activity、Window、View。 android:hardwareAccelerated=...

小打小闹小开小心
2015/12/12
28
0
Android图形---硬件加速(Hardware Acceleration)(一)

本文译自:http://developer.android.com/guide/topics/graphics/hardware-accel.html 从Android3.0(API Level 11)开始,Android 2D渲染管道能够更好的支持硬件加速。硬件加速执行的所有的...

长平狐
2012/10/16
2.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 介绍HTML5给你认识 习题

1.关于HTML5说法正确的是:(C) A.HTML5只是对HTML4的一个简单升级 B.所有主流浏览器都支持HTML5 C.HTML5新增了离线缓存机制 D.HTML5主要是针对移动端进行了优化 2.为了标识一个HTML文...

老码农的一亩三分地
10分钟前
3
0
关于1加手机rom的分析过程

1、关于清理app缓存的信息 framework.jar和services.jar文件,都位于/system/framework目录下面 framework.jar的android.os.Intent类里面定义了action "android.intent.action.CLEAR_PKG",这......

shatian
11分钟前
3
0
[docker]使用root进入docker

docker exec -it --user root ed0 /bin/bash https://blog.csdn.net/kaifeng86/article/details/73237056...

Danni3
24分钟前
3
0
通过重编译icu替换icuxxxx.dll减少QT5发布体积

最近需要使用QT写一个程序,选择了比较新的QT5.3以获得更多特性进行快速开发。但是QTCreator编译出来的程序是动态链接版本,接着就头痛了,自己程序很小,但是所需要携带的动态链接库却很大,...

shzwork
26分钟前
4
0
关于二叉树的前序、中序、后序三种遍历

二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。 比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根...

城市之雾
31分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部