View系列:硬件加速,从理论到实践

本文详细探讨了Android中的硬件加速,包括如何开启硬件加速,如何确定视图是否经过硬件加速,以及不受支持的绘制操作。重点介绍了离屏缓冲的概念,如LAYER_TYPE_SOFTWARE和LAYER_TYPE_HARDWARE,解释了它们对性能的影响,并提供了使用示例。通过设置LayerType,可以在特定场景下提升动画效率,但也需要注意硬件加速可能导致的兼容性问题。
摘要由CSDN通过智能技术生成

//开启
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

View

目前在视图级别无法启用硬件加速

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);// 关闭

确定是否经过硬件加速
  • 如果 View 已附加到硬件加速窗口,则 **View.isHardwareAccelerated() **会返回 true。
  • 如果 Canvas 经过硬件加速,则**Canvas.isHardwareAccelerated() **会返回 true
不受支持的绘制操作

绘制模型(原理)

  • 软件绘制:使用CPU绘制到Bitmap,然后把Bitmap渲染到屏幕
  • 硬件绘制:CPU把绘制内容转换成GPU操作,由GPU负责真正的绘制

在硬件加速关闭的时候:

Canvas绘制的工作方式是:把要绘制的内容写进一个 Bitmap,在之后的渲染过程中,这个 Bitmap的像素内容被直接渲染到屏幕。 这种绘制方式的主要计算工作在于把绘制操作转换为像素的过程,这个过程的计算是由 **CPU **来完成的。大致就像这样:

img

在硬件加速开启时:

Canvas的工作方式改变了:CPU只是把绘制的内容转换为GPU 的操作保存了下来,然后就把它交给 GPU,最终由 GPU 来完成实际的显示工作。大致是这样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值