在上篇文章中实现了优酷菜单执行动画,本文接着完善已经实现的动画功能本文地址:http://www.cnblogs.com/wuyudong/p/5915958.html ,转载请注明源地址。已经实现的菜单动画功能存在一点BUG,那就是当快速连续点击menu或home按钮的时候 ...
在上篇文章中实现了优酷菜单执行动画,本文接着完善已经实现的动画功能
本文地址:http://www.cnblogs.com/wuyudong/p/5915958.html ,转载请注明源地址。
已经实现的菜单动画功能存在一点BUG,那就是当快速连续点击menu或home按钮的时候,动画出现进入和退出不定操作现象
下面来解决这一问题,可以通过监听事件来判断当前是否正在执行进入或进出操作,代码如下:
package com.wuyudong.youkumenu.utils;import android.view.animation.Animation;import android.view.animation.Animation.AnimationListener;import android.view.animation.RotateAnimation;import android.widget.RelativeLayout;public class AnimationUtils { public static int runningAnimationCount = 0; // 旋转出去的动画 public static void rotateOutAnim(RelativeLayout layout, long delay) { RotateAnimation ra = new RotateAnimation( 0f, -180f, //开始,结束的角度, 逆时针 Animation.RELATIVE_TO_SELF, 0.5f, //相对的x坐标点(指定旋转中心x值) Animation.RELATIVE_TO_SELF, 1.0f); //相对的y坐标点(指定旋转中心y值) ra.setDuration(500); ra.setFillAfter(true); //设置动画停留在结束位置 ra.setStartOffset(delay); //设置动画开始延时 ra.setAnimationListener(new MyAnimationListener());//添加监听 layout.startAnimation(ra); } // 旋转进来的动画 public static void rotateInAnim(RelativeLayout layout) { RotateAnimation ra = new RotateAnimation( -180f, 0f, //开始,结束的角度, 顺时针 Animation.RELATIVE_TO_SELF, 0.5f, //相对的x坐标点(指定旋转中心x值) Animation.RELATIVE_TO_SELF, 1.0f); //相对的y坐标点(指定旋转中心y值) ra.setDuration(500); ra.setFillAfter(true); ra.setAnimationListener(new MyAnimationListener()); layout.startAnimation(ra); } static class MyAnimationListener implements AnimationListener { @Override public void onAnimationStart(Animation animation) { runningAnimationCount++; } @Override public void onAnimationEnd(Animation animation) { runningAnimationCount--; } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } }}
原标题:Android自定义控件4
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。