Android ApiDemo学习(五)Animation—— 6 Hide-Show Animation

来源:互联网 发布:mac地址修改器 win7 编辑:程序博客网 时间:2024/05/08 08:53

动画效果:

点击ShowButtons:显示四个按钮0-3

点击按钮0-3,自己消失

勾选checkbox1:按钮消失、出现有转圈的动画效果

勾选checkbox2:按钮x消失,之后的按钮会前移,占据x的原有位置

 

xml布局文件:可以看到静态的布局文件里,没有按钮0-3,这四个按钮是java代码动态控制的

 

LayoutAnimationsHideShow.java:

  • 主activity的oncreate:

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提供的默认动画。

 

  • setupCustomAnimations函数,使用setAnimator添加自定义动画

四个动画效果:分别为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都勾选,点击四个按钮中的一个,它右方的按钮的动画

转着圈移动到前一位置。

原创粉丝点击