public class AnimationUtils {
public static int runningAnimationCount=0;//正在执行的动画个数
/**
* 旋转出去的动画
* @param layout 要旋转的布局
*/
public static void rotateOutAnim(RelativeLayout layout,long delay) {
//即使level2没出来,点击中间也会弹出level3
int childCount=layout.getChildCount();
for (int i=0;i<childCount;i++){
layout.getChildAt(i).setEnabled(false);
}
//开始和结束的角度,相对自己旋转的x长度和y长度
RotateAnimation ra = new RotateAnimation(
0f, -180f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 1f);
ra.setDuration(500);
ra.setFillAfter(true); //设置动画停留在结束位置
ra.setStartOffset(delay); //设置动画延时
//动画实现过程中,按钮不能点击,不然会造成闪烁
ra.setAnimationListener(new MyAnimationListener());
layout.startAnimation(ra);
}
/**
* 旋转进入的动画
* @param layout 要旋转的布局
*/
public static void rotateInAnim(RelativeLayout layout) {
//即使level2没出来,点击中间也会弹出level3
int childCount=layout.getChildCount();
for (int i=0;i<childCount;i++){
layout.getChildAt(i).setEnabled(true);
}
//开始和结束的角度,相对自己旋转的x长度和y长度
RotateAnimation ra = new RotateAnimation(
-180f, 0f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 1f);
ra.setDuration(500);
ra.setFillAfter(true);
ra.setAnimationListener(new MyAnimationListener());
layout.startAnimation(ra);
}
static class MyAnimationListener implements Animation.AnimationListener{
@Override
public void onAnimationStart(Animation animation) {
runningAnimationCount++;
}
@Override
public void onAnimationEnd(Animation animation) {
runningAnimationCount--;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
}
}
仿优酷Menu菜单动画的Utils
最新推荐文章于 2021-05-27 14:23:07 发布