此代码仅适用于第一个动画。尽管ImageView的最终位置不完全是MotionEvent的指向,并且动画看起来也不流畅。所有其他MotionEvent的结果实际上都不是动画。 ImageView刚出现在我触摸屏幕的位置。

这是代码。

ImageView image;
MyAnimationListener am;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    image = (ImageView)findViewById(R.id.imageView1);
    am = new MyAnimationListener(image);
}

@Override
public boolean onTouchEvent(MotionEvent mEvent){

    if(mEvent.getAction()==MotionEvent.ACTION_DOWN){
        TranslateAnimation tAnimation = new TranslateAnimation(image.getX(),mEvent.getX(),image.getY(),mEvent.getY());
        tAnimation.setDuration(500);
        am.setCoordinates(mEvent.getX(), mEvent.getY());
        tAnimation.setAnimationListener(am);

        AnimationSet aSet = new AnimationSet(true);
        aSet.addAnimation(tAnimation);
        image.startAnimation(aSet);
    }

    return true;
}


还有MyAnimationListener的有趣方法。

ImageView i;
float x,y;

public MyAnimationListener(ImageView i){
    this.i = i;
}

public void setCoordinates(float x, float y){
    this.x = x;
    this.y = y;
}

@Override
public void onAnimationEnd(Animation animation) {
    i.setX(x);
    i.setY(y);
}


提前致谢。

最佳答案

可能是您需要在之后调用fill,以便在动画结束时不重置位置。见link

07-25 22:27
查看更多