多个Button的动画
2015-08-03 17:40
211 查看
1:
先看下图,制作很简单。
定义了5个按钮,然后通过点击标题栏的右侧按钮使得这五个按钮依次出现,当其中一个被选中后,按钮按照次序依次退出。主要使用的TranslateAnimation动画,然后给每个动画增添监听,在一个按钮动画结束后,另外一个按钮的动画开始。
,其中所有的动画都是一样的。因此定义了一个平移动画数组。其次由于要给每个动画设置监听,并且只需要对动画的结束做监听,因此有构建了一个AnimationListennerAdapter,这是一个抽象类,他实现了AnimationListener监听接口。
3:
撤销这些按钮的动画代码
4:没有什么技术难点,主要是力气活。有更好的办法实现的朋友请留言,非常感谢。
源文件在这里,应该可以直接下载运行
先看下图,制作很简单。
定义了5个按钮,然后通过点击标题栏的右侧按钮使得这五个按钮依次出现,当其中一个被选中后,按钮按照次序依次退出。主要使用的TranslateAnimation动画,然后给每个动画增添监听,在一个按钮动画结束后,另外一个按钮的动画开始。
,其中所有的动画都是一样的。因此定义了一个平移动画数组。其次由于要给每个动画设置监听,并且只需要对动画的结束做监听,因此有构建了一个AnimationListennerAdapter,这是一个抽象类,他实现了AnimationListener监听接口。
private abstract class AnimationListerAdapter implements AnimationListener{ @Override public void onAnimationStart(Animation animation){ } @Override public void onAnimationRepeat(Animation animation) { } @Override public abstract void onAnimationEnd(Animation animation) ; }
2: 各个按钮一次出现的动画设置
/** * 点击右侧按钮时,按钮出现呈现出的动画效果, * 各个按钮按顺序出现并下移, * btn1出现并下移->btn2出现并下移->btn3出现并下移->btn4出现并下移->btn5出现并下移 */ private void startbtnAnim() { int btnNum = 5 ; btn1.setVisibility(View.VISIBLE) ; final Animation[] T_Anim = new Animation[btnNum]; for (int i = 0; i < btnNum; i++) { T_Anim[i] = new TranslateAnimation(0f, 0, -70f, 0); T_Anim[i].setDuration(100); T_Anim[i].setInterpolator(new BounceInterpolator()); T_Anim[i].setFillAfter(true); } btn1.startAnimation(T_Anim[0]); T_Anim[0].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn2.setVisibility(View.VISIBLE) ; btn2.startAnimation(T_Anim[1]); } }); T_Anim[1].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn3.setVisibility(View.VISIBLE) ; btn3.startAnimation(T_Anim[2]); } }); T_Anim[2].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn4.setVisibility(View.VISIBLE) ; btn4.startAnimation(T_Anim[3]); } }); T_Anim[3].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn5.setVisibility(View.VISIBLE) ; btn5.startAnimation(T_Anim[4]); btn1.clearAnimation(); btn2.clearAnimation(); btn3.clearAnimation(); btn4.clearAnimation(); } }); T_Anim[4].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn5.clearAnimation(); } }); }
3:
撤销这些按钮的动画代码
/** * 当人一个按钮被按下时,所有按钮动态退出 * 各个按钮按顺序上移并退出 * btn5上移消失->btn4上移消失->btn3上移消失->btn2上移消失->btn1消失 */ private void cancelbtnAnim() { //按钮个数 int btnNum = 5 ; //btnNum-1 :最上面的一个按钮不用添加消失动画 final Animation[] T_Anim = new TranslateAnimation[btnNum-1]; for (int i = 0; i < btnNum-1; i++) { T_Anim[i] = new TranslateAnimation(0f, 0, 0f, -70); T_Anim[i].setDuration(100); } btn5.startAnimation(T_Anim[0]); T_Anim[0].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn5.setVisibility(View.GONE); btn5.clearAnimation(); btn4.startAnimation(T_Anim[1]); } }); T_Anim[1].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn4.setVisibility(View.GONE); btn4.clearAnimation(); btn3.startAnimation(T_Anim[2]); } }); T_Anim[2].setAnimationListener(new AnimationListerAdapter() { @Override public void onAnimationEnd(Animation animation) { btn3.setVisibility(View.GONE); btn3.clearAnimation(); btn2.startAnimation(T_Anim[3]); } }); T_Anim[3].setAnimationListener(new AnimationListerAdapter(){ @Override public void onAnimationEnd(Animation animation) { btn2.setVisibility(View.GONE); btn2.clearAnimation(); btn1.setVisibility(View.GONE); } }); }
4:没有什么技术难点,主要是力气活。有更好的办法实现的朋友请留言,非常感谢。
源文件在这里,应该可以直接下载运行
相关文章推荐
- 音乐播放器
- Apache的prefork模式和worker模式
- AOP术语
- ABP(现代ASP.NET样板开发框架)系列之17、ABP应用层——参数有效性验证
- CentOS6.5双网卡绑定
- 提取手机上的联系人号码制作通讯录
- HDU 1171 Big Event in HDU(多重背包)
- hdoj-1171-Big Event in HDU【动态规划】
- 发布订阅机制
- centos swig 编译c,python调用
- 还好活下来了
- “The run destination iOS Device is not valid for running the scheme”
- 一行字符中寻找英文单词个数
- url
- java发送邮件(1)
- 匹配邮箱正则表达式
- 指纹识别的基本原理
- zoj 3612 ——Median
- 合并百度影音的离线数据 with python 2.3 格式更新
- 指针操作一维数组