您的位置:首页 > 移动开发 > Android开发

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

2014-04-16 20:25 956 查看
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闪一下的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐