在使用动画的时候要注意: 系统原生的旋转和位置动画并没有真正改变view的位置
当二级菜单消失的时候,我们点击之前触发事件的位置,就会发现能够继续显示或隐藏三级菜单。如下图
我们在AnimUtil工具类中,当隐藏菜单后,将所有布局下面的子View禁用;当显示菜单的时候,将所有布局下的子View进行显示。完整代码如下:
public class AnimUtil {
/**
* 关闭按钮
*
* @param rl
* 操作的布局
* @param startOffset
* 动画延迟效果实现
*/
public static void closeMenu(RelativeLayout rl, int startOffset) {
// 获取RelativeLayout子View
for (int i = 0; i < rl.getChildCount(); i++) {
// 获取当前子View并禁用
rl.getChildAt(i).setEnabled(false);
}
// pivotXValue: 0-1
RotateAnimation animation = new RotateAnimation(0, -180,
RotateAnimation.RELATIVE_TO_SELF, 0.5f,
RotateAnimation.RELATIVE_TO_SELF, 1);
animation.setDuration(500);
animation.setFillAfter(t