0

我用API 10. 我有一个ImageView嵌套在一个LinearLayout. 有ImageView一个OnClickListener(或一个OnTouchListener,我确定最后会使用哪个)。ImageView 位于屏幕中央,单击时会执行以下动画。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillEnabled="true"
    android:fillAfter="true"
    >
    <alpha
        android:fromAlpha="1"
        android:toAlpha="0" 
        android:duration ="500"
        />

    <translate 
        android:fromXDelta="0%"
        android:toXDelta="-100%p"
        android:duration ="1000"
    />
</set>

问题是动画结束后,它又回到了它的第一个位置,淡出为0,但即使它没有出现,它仍然可以点击。我单击 ImageView 第一次定位的空白空间,它再次执行动画。就像点击鬼一样。如何使 ImageView 保持在写入的位置android:toXDelta

4

1 回答 1

0

你可以为你的动画设置一个animationListener来解决这个问题,我创建了这个简单的函数:

public void startAnimation(final View v, final int animationResourceId, AnimationListener l){
    Animation anim;

    if(v!=null){    // can be null, after change of orientation
        anim = AnimationUtils.loadAnimation(v.getContext(),resId);
        v.setAnimation(anim);
        anim.setAnimationListener(l);
        v.startAnimation(anim);                 
    }
}

然后每次我需要为视图设置动画时,我都可以这样做:

startAnimation(myView, R.anim.my_anim, new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                myView.setVisibility(View.GONE);    
            }
        });
于 2013-04-25T15:32:21.020 回答