android硬件加速的优点,Android硬件加速

Invalidate the hierarchy

Record and update display lists

Draw the display lists

使用这样的方式。就能够避免软件画图中第二点的bug。

比如,假设有一个包括了一个Button对象的ListView对象的LinearLayout布局,那么LinearLayout布局的显示列表例如以下:

1. DrawDisplayList(ListView);

2.DrawDisplayList(Button)

假设如今要改变ListView对象的不透明度,那么在调用ListView对象的setAlpha(0.5f)方法时,显示列表就包括了下面处理:

1.SaveLayerAlpha(0.5);

2.DrawDisplayList(ListView);

3. Restore。

4.DrawDisplayList(Button)

不支持硬件加速的画图方法

假设应用程序受到这些错误的功能或限制的影响,那么能够通过调用setLayerType(View.LAYER_TYPE_SOFTWARE, null)方法针相应用程序受到影响的部分来关闭硬件加速。

View Layers

在全部的Android版本号中,View都能够通过Canvas.saveLayer()方法来获得离屏缓冲的能力,离屏缓冲区或层有多种用途,特别是在呈现复杂的动画或使用组合效果时,能够获得更好的性能。比如,使用Canvas.saveLayer()能够实现淡入淡出的效果,先临时把一个View对象渲染在一个层中,然后把它和不透明因子合成到屏幕上显示。

从Android3.0(API Level 11)開始。用View.setLayerType()方法使用层的方式和时机会很多其它的控制。

这个API须要两个參数:一个是层的类型,还有一个是可选的,用于描写叙述层应该怎样被合成的Paint对象。

能够使用这个Paint对象来进行颜色过滤、特殊的混合模式、或者层的透明度。View对象能够使用下面三种层类型:

LAYER_TYPE_NONE:View对象用普通的方式来呈现,并且不是由屏幕外缓存来返回的。这样的类型是默认的行为;

LAYER_TYPE_HARDWARE:假设应用程序是硬件加速的,那么该View对象被呈如今硬件的一个硬件纹理中。假设没有被硬件加速,那么这样的层类型的行为与LAYER_TYPE_SOFTWARE相同。

LAYER_TYPE_SOFTWARE:View对象会被呈如今软件的一个位图中。

使用哪种层的类型。依赖下面目标:

性能:使用硬件层类型,把View呈现到一个硬件纹理中。一旦该View对象被呈现到一个层中,那么它的画图代码直到调用该View对象的invalidate()方法时才会被运行。对于某些动画,如alpha动画,就能够直接使用该层。这么做对于GPU来说是很高效的。

视觉效果:使用硬件或软件层类型和一个Paint对象。能够把一些特殊的视觉处理应用给一个View对象。

比如,使用ColorMatrixColorFilter对象绘制一个黑白相间的View对象。

兼容性:使用软件层类型会强制把一个View对象呈如今软件中。

假设View对象被硬件加速(比如,假设整个应用程序都被硬件加速)发生呈现问题,那么使用软件层类型来解决硬件呈现管道的限制是一个easy的方法。

View layers and animations

当应用层使用硬件加速的时候。手机显示硬件能够让动画、显示效果更加平滑。假设你的动画效果不够流畅,那么就须要考虑在View层面上使用硬件加速来进行优化。在Android中,有些视图操作使用硬件加速是很高效的,因为这些操作不须要让对象失效后重绘,比如:

1. alpha:改变层的透明度

2. x,y,translation,translation:改变层的位置

3. scaleX,scaleY:改变成的缩放

4. rotation,rotation,rotationY:改变3D空间中视图的方向

5. pivotX,pivotY:改变层的变换控制点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值