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的移动动画。
动画监听:
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闪一下的问题。
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闪一下的问题。
相关文章推荐
- Android中ListView点击和ListView的item里面的Button或ImageView不能同时生效问题的解决
- Android控件listView条目不能点击问题
- 关于android videoview视频不能匹配整个videoview控件的问题
- android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
- Android 隐藏ViewPager之后,控件点击事件无法响应的问题
- (转)android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
- android webview图片文件上传兼容性问题——上传控件点击无效的解决办法
- android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
- android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
- android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
- Android 6.0 解决recyclerview 在 scrollview 中不能全部显示,高度不正常的问题
- Android控件ViewPager实现带有动画的引导页
- 解决Recyclerview内控件不能横屏铺满控件居左的问题
- Android 动画1--View控件的显示和隐藏效果
- Android控件FlowLikeView实现点赞动画
- android webview 加载重定向页面时点击无法回退,导致重复加载当前页面问题的解决方案
- 解决UIScrollView,UIImageView等控件不能响应touch事件的问题
- Android中RecyclerView的item中控件的点击事件添加删除一行、上移下移一行的代码实现
- android 给LinearLayout中添加一定数量的控件,并让着一定数量的控件从右到左移动,每隔若干秒停顿一下,最后一个view链接第一个view,然后继续移动循环往复,形成一个死循环简单动画效果
- android view控件位置的问题总结