Android学习(37) -- 自定义控件(2)解决旋转的bug

在Android开发中,遇到系统旋转动画并未实际改变View位置的问题,导致二级菜单在隐藏后,原先点击区域仍能触发三级菜单显示。通过在AnimUtil工具类中,控制隐藏和显示菜单时子View的状态来解决此bug。同时,更新MainActivity的逻辑,确保点击home按钮时,二级和三级菜单都能正确关闭。
摘要由CSDN通过智能技术生成

在使用动画的时候要注意: 系统原生的旋转和位置动画并没有真正改变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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值