此代码仅适用于第一个动画。尽管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