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

来源:互联网 发布:java开发的网游 编辑:程序博客网 时间:2024/05/17 03:48


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 {@Overridepublic 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{@Overridepublic void onAnimationEnd(Animation animation) {kb_bg.clearAnimation();kb_bg.setVisibility(View.VISIBLE);}@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationRepeat(Animation animation) {}}

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


0 0