В чем ошибка моей Android-анимации моего ImageView? - PullRequest
1 голос
/ 26 декабря 2011

Этот код работает только для первой анимации.Хотя конечная позиция ImageView не совсем соответствует MotionEvent, и анимация выглядит не плавно.Результатом всех других MotionEvents фактически является отсутствие анимации.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);
}

Спасибовперед.

1 Ответ

0 голосов
/ 27 декабря 2011

может быть, вам нужно сделать вызов fillAfter, чтобы положение не сбрасывалось в конце анимации.см ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...