Android: оставайтесь в состоянии старой анимации при запуске новой анимации

Я хотел бы сделать два типа анимации на одном представлении: TranslateAnimation и несколько мгновений спустя ScaleAnimation. Проблема заключается в том, что при начале ScaleAnimation представления возвращаются в исходное состояние (до TranslateAnimation). Есть ли способ сделать то, что я хочу ?

1 ответ

  1. Вы можете добавить прослушиватель кTranslateAnimation, и когда это будет сделано, измените положение Viewанимации на конечное положение.

    TranslateAnimation anim = new TranslateAnimation(...);
    anim.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) { }
    @Override
    public void onAnimationRepeat(Animation animation) { }
    @Override
    public void onAnimationEnd(Animation animation) {
        view.setX(NEW_X_POSITION);
        view.setY(NEW_Y_POSITION);
    }
    });
    

    Но я бы предложил на самом деле перейти от старого TranslateAnimation/ ScaleAnimationтипа классов к новому ViewPropertyAnimatorфреймворку ( http://android-developers.blogspot.co.il/2011/05/introducing-viewpropertyanimator.html ).
    В новом фреймворке вам не придется менять позиции, как в приведенном выше коде, а синтаксис намного проще:

    myView.animate().x(500).y(500);
    

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

    Дальнейшее чтение: https://developer.android.com/reference/android/view/ViewPropertyAnimator.html