Android布局动画(LayoutTransition容器转换动画)--下
Android出现属性动画之后,提供了一套对ViewGroup中View的显示隐藏添加删除等操作的转换动画。
我们可以通过LayoutTransition对ViewGroup中的view改变进行动画处理。
ViewGroup转换动画类型
- 触发条件:
当你添加或者移除ViewGroup中的View时,或者你调用View的setVisibility()方法来控制其显示或消失时,就处于一个转换状态。这种事件就有可能会激发动画。
当前被增加或者移除的View可以经历一个出现的动画或者一个消失的动画。而且不止是当前要控制的View,ViewGroup中的其他View也可以随之进行变动,比如经历一个动画移动到新的位置。 - 动画类型(四种)
- View本身出现的动画;APPEARING
- View消失的动画;DISAPPEARING
- 由于新增了其他View而需要改变位置的View的动画;CHANGE_APPEARING
- 由于移除了其他View而需要改变位置的动画;CHANGE_DISPPEARING(如果增加或移除了其他View之后,当前View的位置不需要改变,则无动画)
- API
- ViewGroup.setLayoutTransition(LayoutTransition transition) : 给容器设置转换动画控制器LayoutTransition对象。
- LayoutTransition.setAnimator(int transitionType, Animator animator):给LayoutTransition 设置动画,并指定动画类型。transitionType有四中类型,即上边所说的四中类型。
- LayoutTransition.setStartDelay(int transitionType, long delay):给指定的动画类型设置启动延迟。
- LayoutTransition.setDuration(int transitionType, long duration):给指定的动画类型设置时间。
– 属性动画相关API - ObjectAnimator.ofPropertyValuesHolder(Object target,PropertyValuesHolder… values):根据PropertyValuesHolder讲多个属性合并成一个动画。
- PropertyValuesHolder.ofFloat()/ofInt()/ofKeyframe():一系列获取PropertyValuesHolder的方法。
PropertyValuesHolder可以代表某种需要执行的属性动画,ObjectAnimator.ofPropertyValuesHolder()可以将多个属性都有的动画进行合并成一个。 - Keyframe.ofFloat()/ofInt()等获取Keyframe的方法。Keyframe标识再某个指定的帧上做动作,即是关键帧的意思。
实例
/animation.gif)
1 | public class TestLayoutTransitionActivity extends Activity { |