Установите для слушателя анимации активность анимации - PullRequest
19 голосов
/ 02 августа 2010

Я использую метод overridePendingTransition для выполнения пользовательских анимаций действий.

Я хотел бы знать, когда заканчивается анимация (обратный вызов / слушатель).

Есть ли прямой способ добиться этого, если нет, пожалуйста, предложите мне немного обойти.

Ответы [ 4 ]

13 голосов
/ 28 апреля 2011

Я использую этот метод для запуска любой анимации (resID анимации XML).Если nextPuzzleOnEnd имеет значение true, метод "nextPuzzle" вызывается после завершения анимации.

Этот метод является частью моих приложений-головоломок, и я использую его для отображения любой успешной анимации и после нее (после завершения анимации)продолжить со следующей загадкой.

 /*
 * start animation (any view)
 */
 private void startAnimation(View v, int resId, Boolean nextPuzzleOnEnd){
    Animation anim;

    if(v!=null){    // can be null, after change of orientation
            anim = AnimationUtils.loadAnimation(this.getContext(),resId);
            anim.setFillAfter(false);
            v.setAnimation(anim);
            if( nextPuzzleOnEnd ){
                anim.setAnimationListener(new AnimationListener() {
                    public void onAnimationStart(Animation anim)
                    {
                    };
                    public void onAnimationRepeat(Animation anim)
                    {
                    };
                    public void onAnimationEnd(Animation anim)
                    {
                        nextPuzzle();
                    };
                });                     
            }
            v.startAnimation(anim);                 
    }
  }
8 голосов
/ 02 августа 2010

overridePendingTransition не имеет слушателя.Как я писал в предыдущем посте, вы скорее хотите использовать обычную анимацию вместо overridePendingTransition (то есть только для Android 2.0 и выше).

Вы можете получить подобный эффект, а также сделать больше интересных вещей.с обычной анимацией.Мой предыдущий пост здесь: Загрузка XML медленно

6 голосов
/ 14 мая 2017

После неудачного поиска Google по этому вопросу, я нашел решение, пройдя все методы переопределения.

Итак, что я сделал, переопределил этот метод в действии, которое выходит на экран:

@Override
public void onEnterAnimationComplete() {
        super.onEnterAnimationComplete();
}
1 голос
/ 11 сентября 2018

@ Решение Hambug это хорошо.Но есть проблема.onEnterAnimationComplete будет работать на Lollipop и более поздних версиях API (21).

@Override
public void onEnterAnimationComplete() {
    super.onEnterAnimationComplete();
    //write code here.
 }

независимо от того, какой код вы пишете вышеописанным методом, не будет выполняться на устройствах prelolipop.Поэтому вы должны поставить проверку версии и написать ее в соответствии с вашими потребностями, например, в onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP){
        //write code here.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...