android 动画结束后控件不能点击问题和View闪的问题


android 给view设置动画并.setFillAfter(true)(停在动画结束时)动画结束后view的实际位置还是动画开始位置(显示是动画结束的位置,是前面设置.setFillAfter(true)的原因)。


    private RelativeLayout kb_bg;
    private Animation in;
    private RelativeLayout.LayoutParams params;

private void initKeyBoardAnim() {
		kb_bg = (RelativeLayout) findViewById(R.id.bt_main_kb_bg);
		kbAnim = new KeyBoardAnimListener();
		params = (RelativeLayout.LayoutParams) kb_bg.getLayoutParams();
		in = new TranslateAnimation(0, 300, 0, 0);//view向移动300像素的动画
                in.setFillAfter(true);
		in.setDuration(300);
		in.setAnimationListener(kbAnim);
		
		
		Button btn = (Button) findViewById(R.id.bt_main_kb_btn_hideOrShow);
		btn.setOnClickListener(new KBBtnEvent());
		
	}


按钮事件:

1,开始动画时把要移动的View先隐藏再开始View的移动动画

	private class KBBtnEvent implements OnClickListener {
		
		@Override
		public void onClick(View v) {
			params.leftMargin = 300;
                        kb_bg.setLayoutParams(params);
                        kb_bg.setVisibility(View.GONE);
                        kb_bg.startAnimation(in);
		}
	};


动画监听:

2,在动画结束后清除动画,再显示View。

	private class KeyBoardAnimListener implements AnimationListener{
		@Override
		public void onAnimationEnd(Animation animation) {
			kb_bg.clearAnimation();
			kb_bg.setVisibility(View.VISIBLE);
		}

		@Override
		public void onAnimationStart(Animation animation) {
		}

		@Override
		public void onAnimationRepeat(Animation animation) {
		}
	}

这种方式也解决了动画结束后View闪一下的问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值