我需要使用其他触摸隐藏和显示我的列表视图。因此,使用动画
隐藏屏幕左侧的列表视图 Animation animation = new TranslateAnimation(-100, 0,0, 0);
animation.setDuration(100);
animation.setFillAfter(true);
lv.startAnimation(animation);
lv.setVisibility(0);
并使用
显示lv.setVisibility(View.VISIBLE);
我的问题是列表视图没有得到隐藏。它会向左侧移动并再次返回。我不知道如何在触摸时完全隐藏列表视图到左边缘。请帮助实现这个
答案 0 :(得分:21)
// To animate view slide out from left to right
public void slideToRight(View view){
TranslateAnimation animate = new TranslateAnimation(0,view.getWidth(),0,0);
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
view.setVisibility(View.GONE);
}
// To animate view slide out from right to left
public void slideToLeft(View view){
TranslateAnimation animate = new TranslateAnimation(0,-view.getWidth(),0,0);
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
view.setVisibility(View.GONE);
}
// To animate view slide out from top to bottom
public void slideToBottom(View view){
TranslateAnimation animate = new TranslateAnimation(0,0,0,view.getHeight());
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
view.setVisibility(View.GONE);
}
// To animate view slide out from bottom to top
public void slideToTop(View view){
TranslateAnimation animate = new TranslateAnimation(0,0,0,-view.getHeight());
animate.setDuration(500);
animate.setFillAfter(true);
view.startAnimation(animate);
view.setVisibility(View.GONE);
}
答案 1 :(得分:3)
如果您想隐藏您的视图,请使用
View.INVISIBLE // constant value 4
或
View.GONE // constant value 8
您当前正在使用值0 ,这是View.VISIBLE
的常量值。
我想你想在动画制作后隐藏ListView吗?
但是你在开始动画后直接显示ListView。看看 AnimationListener 并隐藏ListView
onAnimationEnd(...)
例如:
// assuming the listview is currently visible
Animation animation = new TranslateAnimation(-100, 0,0, 0);
animation.setDuration(100);
animation.setFillAfter(true);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
lv.setVisibility(View.GONE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
lv.startAnimation(animation);
答案 2 :(得分:3)
最后我找到了答案,这是对坐标值的非常简单的修改。代码是
Animation animation = new TranslateAnimation(0,-200,0, 0);
animation.setDuration(2000);
animation.setFillAfter(true);
listView1.startAnimation(animation);
listView1.setVisibility(0);
这里设置负值在第二个坐标原因从o移动两侧负面,这意味着视图正在向内侧左侧移动。
答案 3 :(得分:0)
对于你不知道的一般理解,我找到了另一个解释它非常好的帖子!视图及其动画的工作方式与预期的有所不同!