Остановить анимацию AnimatedVectorDrawable после воспроизведения

У меня есть AnimatedVectorDrawable, который при нажатии анимируется из состояния воспроизведения в состояние паузы.

...
 animatedVectorDrawable.registerAnimationCallback(new Animatable2.AnimationCallback() {
                    @Override
                    public void onAnimationEnd(Drawable drawable) {
                      //Reset the image back to its original state

                      //What I've tried so far
                      /* img.setImageResource(R.drawable.original_state)
                        animatedVectorDrawable.stop()
                        animatedVectorDrawable.reset() */
                    }
                });
 animatedVectorDrawable.start();

Однако мне не удалось вернуть его в исходное состояние, чтобы воспроизвести его снова. Как я могу это решить?

0
0
683
2

Ответы 2

Чтобы получить начальное состояние чертежа, используйте animatedVectorDrawable.seekTo(0), и вы можете вызвать animatedVectorDrawable.stop()

.seekTo () не является функцией

Boron 27.10.2018 16:14

Вы могли бы сделать так:

    final Handler mainHandler = new Handler(Looper.getMainLooper());
    animatedVector.registerAnimationCallback(new Animatable2.AnimationCallback() {
        @Override
        public void onAnimationEnd(final Drawable drawable) {
            mainHandler.post(new Runnable() {
                @Override
                public void run() {
                    animatedVectorDrawable.start();
                }
            });
        }
    });
    animatedVectorDrawable.start();

ну, это держит его в цикле взад и вперед

Boron 27.10.2018 16:13

@ user8284066 вы можете определить логическую переменную и запускать анимацию только тогда, когда переменная равна true.

navylover 28.10.2018 00:36

Другие вопросы по теме