渲染精品课

alpha会给手机增加渲染

核心点:

当我们的view使用了alpha做精美的效果的同时会给渲染器增加额外的负担

  1. 会开辟一个空间,进行离屏渲染
  2. 一张图的展示需要经过两次渲染,增加了开销

如何解决这个问题

  1. 我们可以让GPU增加硬件支持,但是也是有成本的,就是增加了内存开销(GPU需要时刻预览一个内存区域来完成绘制任务);使用硬件渲染会让绘制所读提升2倍;setL
  2. 需要再动画完成之后需要告诉GPU释放硬件支持;
  3. 上面这个步骤可以简单替换成ViewPropertyAnimator.alpha(0.0f).withLayer();

下面是解决思路

当然还有其他的方案: 就是如果比如阴影效果,包含非透明部分和透明部分,但是他们不会重叠,那么我们可以通过覆写 View.hasOverlappingRendering=false实现

但是如果存在覆盖的透明view,但是我们强制设置View.hasOverlappingRendering=false会出现透明度错误问题,如下右图,alpha偏淡