动画效果:
点击ShowButtons:显示四个按钮0-3
点击按钮0-3,自己消失
勾选checkbox1:按钮消失、出现有转圈的动画效果
勾选checkbox2:按钮x消失,之后的按钮会前移,占据x的原有位置
xml布局文件:可以看到静态的布局文件里,没有按钮0-3,这四个按钮是java代码动态控制的
LayoutAnimationsHideShow.java:
1. 创建四个按钮,添加监听器。
2. 按钮监听器:点击按钮后,对应按钮消失。根据checkbox2是否勾选,确定按钮是“GONE”还是“INVISIBLE”。前者不仅消失,位置也不保留;后者只是不可见,按钮位置还保留
3. "添加按钮"按钮的监视器:点击后,上面四个按钮都设置为VISIBLE,即可见
4. checkbox1的状态:
首先需要知晓一个概念,LayoutTransition:当ViewGroup对象的一个layout发生改变时,LayoutTransition可以使能一个auto animation。这个“改变”指Layout Container中的item添加或者删除(invisible与否也包含在内)。item的添加、删除会引起APPEARING和DISAPPEARING事件,从而引发动画效果。使用setLayoutTransition为Layout Container设置这种功能。如果是自定义的动画,使用setAnimator函数
(1)checkbox1选中:
------使用setStagger函数,设置两种改变引起动画,分别是CHANGE_APPEARING和CHANGE_DISAPPEARING,延迟时间都是30. 这个延迟时间指的是container中相邻item之间的动画延迟。比如将这个延迟增大,那么点击按钮0,0消失后,1的动画开始时间和2的动画开始时间,二者之间的时间差会增长。
------调用自定义函数setupCustomAnimations,这个函数的功能是是使用setAnimator函数增加一个自定义动画,详细见下
(2)checkbox1未选中:
直接setLayoutTransition,使用的不是选中状态下的自定义动画,而是LayoutTransition提供的默认动画。
四个动画效果:分别为Adding、Changing while adding、Removing、Changing while Removing。
1. Adding:添加一个按钮时。——点击show buttons按钮后,四个按钮显示时的动画
绕y轴旋转90度出现。
2. Changing while adding:添加按钮,导致其他按钮移动时,其他按钮的动画。——本例中四个按钮一起出现,因此这个动画没有体现出来
按钮缩小到不见,又扩大到原样
3. Removing:删除按钮时。——点击下面四个按钮中的某一个,被点击按钮消失的动画
绕x轴旋转90度不见。
4. Changing while removing:删除按钮,导致其他按钮移动时,其他按钮的动画。——本例中,checkbox1、2都勾选,点击四个按钮中的一个,它右方的按钮的动画
转着圈移动到前一位置。