我使用向左移动并使用xml向右移动动画在屏幕上左右移动我的列表。
设置动画时它工作正常,它完全向左和向右移动,我在onAnimationEnd()中使用了我的列表的setVisibility,并将alpha设置为(0)并隐藏。
但是,如果我点击我的列表的上一个地方,我可以选择它的项目:(我不知道为什么它仍然在这个地方
这是我的move_left.xml
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true"
>
<translate
android:fromXDelta="0%p"
android:toXDelta="-25%p"
android:duration="500" />
</set>
这是我的move_right.xml
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true"
>
<translate
android:fromXDelta="-25%p"
android:toXDelta="0%p"
android:duration="500" />
</set>
这是隐藏listView的代码
@覆盖 public void onAnimationStart(动画动画){
if(animation.equals(move_right)){
verticalListView.setVisibility(View.VISIBLE);
verticalListView.setAlpha(1);
}
}
@覆盖 public void onAnimationEnd(动画动画){
if(animation.equals(move_left)){
verticalListView.setAlpha(0);
verticalListView.setVisibility(View.GONE);
verticalListView.setClickable(false);
}
}
这个方法我用来开始动画并隐藏/显示我的列表
private void showHideList(){
if (!isShowing) {
isShowing = true;
verticalListView.startAnimation(move_left);
}else{
isShowing = false;
verticalListView.startAnimation(move_right);
}
}
答案 0 :(得分:0)
您可以使用Runnable()
。我可以看到你的动画持续500毫秒。然后,您可以按如下方式调整可见度;
new Handler().postDelayed(new Runnable() {
public void run() {
verticalListView.setVisibility(View.GONE);
}
}, 500);
因此动画开始,500毫秒后,listView消失。
尝试在这里使用它,
private void showHideList(){
if (!isShowing) {
isShowing = true;
verticalListView.startAnimation(move_left);
new Handler().postDelayed(new Runnable() {
public void run() {
verticalListView.setVisibility(View.GONE);
}
}, 500);
}else{
isShowing = false;
verticalListView.setVisibility(View.VISIBLE);
verticalListView.startAnimation(move_right);
}
}
答案 1 :(得分:0)
添加:
private boolean isListEnabled = true;
public void setListEnabled(boolean isEnabled) {
this.isListEnabled = isEnabled;
}
@Override
public boolean isEnabled(int position) {
return isListEnabled;
}
默认情况下,您的列表将被启用,将其添加为禁用:
@Override public void onAnimationEnd(Animation animation) {
if(animation.equals(move_left)){
verticalListView.setAlpha(0);
verticalListView.setVisibility(View.GONE);
verticalListView.setClickable(false);
yourAdapter.setListEnabled(false);
}
}
再次启用只发送true。