以下内容来自Android Training,本人在此基础上作一些个人实践和记录,以便参考
布局变更,顾名思义,在layout中有变化,比如添加或删除或更新View。
如下图,展示一个动态的布局变更:
Enable animations
很简单,一行代码就可以搞定,设置ViewGroup的animateLayoutChanges属性为true,例:
<LinearLayout android:id="@+id/container"
android:animateLayoutChanges="true"
...
/>
设置之后正常布局变更将会有动画过渡,效果如下:
自定义动画
当然,这个布局的变更也是允许自定义的,我们只是需要拿一个LayoutTransition对象个ViewGroup就可以了,然后把一个动画信息放到LayoutTransition里面,代码如下:
// custom a layout transition, do a rotation base Y-axis
LayoutTransition transition=new LayoutTransition();
Animator animator=ObjectAnimator.ofFloat(null,View.ROTATION_Y,0,180);
// 注意,在animator中设置duration无效,要在这里设置
transition.setDuration(LayoutTransition.APPEARING,1000);
transition.setAnimator(LayoutTransition.APPEARING,animator);
//将LayoutTransition对象传入,替换默认的LayoutTransition对象
mContainerView.setLayoutTransition(transition);
自定义的效果如下,带个旋转: