需求:
1.布局按照上下位置层间隔固定时间播放透明度改变动画
2.播放透明度时播放缩放动画
4.缩放动画执行完成时所有透明度都变为不透明1
效果如下:
实现原理分析:
1.先有将布局按照由上到下层次布局
2.对每一层都添加一个透明度渐变动画
3.按照由上到下层次增加播放延迟时间
4.给整个布局添加一个缩放动画,动画时长为从第一个透明度变化试图开始到最后一个结束
代码实现:
组合动画我们首先要想到AnimatorSet,该对象可以任意组合动画
比如,设置一个AnimatorSet将动画1和动画2同时播放,动画3在动画2结束后播放,动画4则在动画3结束后播放:
AnimatorSet s = new AnimatorSet();
s.play(anim1).with(anim2);
s.play(anim2).before(anim3);
s.play(anim4).after(anim3);
//顺序播放
set.playSequentially(anim1, anim2, anim3);
但是我们实现的效果并不是等某一个都会执行完成后再执行下一个,而是在某一个都会执行一段时间后再执行另一个,这种情况我们就需要知道每一个动画执行时间间隔,在每个动画执行时做一个延迟执行时间。
最终代码实现如下: