控制旋转动画显示和隐藏
package com.itheima.youkumenu.utils;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.RotateAnimation;
public class MenuUtils {
public static int animationCount = 0;
/**
* 隐藏菜单
* @param menu 菜单布局
*/
public static void hideMenu(ViewGroup menu,long startOffset) {
createAnimation(menu, 0, -180,startOffset);
//设置所有按钮不可以点击
setIconClickable(menu,false);
}
/**
* 处理菜单布局中按钮是否可以点击
* @param menu 菜单的布局
* @param clickable 是否可以点击
*/
private static void setIconClickable(ViewGroup menu, boolean clickable) {
for(int i = 0;i<menu.getChildCount();i++){
View view = menu.getChildAt(i);
//设置是否可以点击
view.setClickable(clickable);
}
}
/**
* 显示菜单
* @param menu 菜单布局
*/
public static void showMenu(ViewGroup menu) {
createAnimation(menu, -180, 0,0);
//设置所有按钮可以点击
setIconClickable(menu, true);
}
public static void createAnimation(ViewGroup menu,float from,float to,long startOffset){
float fromDegrees = from;
float toDegrees = to;
int pivotXType = Animation.RELATIVE_TO_SELF;
float pivotXValue = 0.5f;
int pivotYType = Animation.RELATIVE_TO_SELF;
float pivotYValue = 1f;
RotateAnimation animation = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue);
animation.setDuration(400);
//给动画设置延迟执行的时间
animation.setStartOffset(startOffset);
//设置动画执行之后停在结束的状态
animation.setFillAfter(true);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//动画开始执行
animationCount++;
}
@Override
public void onAnimationRepeat(Animation animation) {
//动画重复执行
}
@Override
public void onAnimationEnd(Animation animation) {
//动画结束
--animationCount;
}
});
menu.startAnimation(animation);
}
}