Я нашел эту кнопку Lottie Play/Pause, но я не знаю, как показать состояние воспроизведения, когда мой аудиоплеер поставлен на паузу, показать состояние паузы и повторить с анимацией эквалайзера в нем (см. предварительный просмотр лотереи), когда проигрыватель играет. Я прочитал документ, но нет примера для этого случая. У меня нет никаких знаний об After Effect для управления анимацией.
Lottie Android - Как играть с позиции на позицию и повторять по диапазону?
comment
Вам нужно будет разделить это на несколько анимаций, чтобы использовать их в реальном мире.
- person Martin Zeitler   schedule 09.01.2020
Ответы (1)
Согласно анимации Лотти, у него есть кадры, поэтому, манипулируя этими кадрами, вы можете добиться того, что хотите, образец
AnimationView play_pause = findViewById(R.id.play_pause);
play_pause.cancelAnimation();
play_pause.setMinFrame(90);
play_pause.setMaxFrame(175);
Этот код будет повторять вашу анимацию в диапазоне 90-175. Я тестировал его на вашей кнопке Lottie Play/Pause, поэтому при нажатии для остановки вы должны изменить MaxFrame на 210 и установить цикл на 1 после завершения анимации, он остановится в воспроизведении изображения.
И это весь код для достижения чего-то подобного
Boolean isPlaying = false;
play_pause = findViewById(R.id.play_pause);
play_pause.pauseAnimation();
play_pause.setMinFrame(60);
play_pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isPlaying){
play_pause.removeAllAnimatorListeners();
play_pause.addAnimatorUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
if (valueAnimator.getAnimatedFraction() == 1){
play_pause.setMinFrame(60);
play_pause.pauseAnimation();
}
}
});
play_pause.setMinFrame(175);
play_pause.setMaxFrame(210);
isPlaying = false;
} else {
play_pause.setMaxFrame(175);
play_pause.removeAllUpdateListeners();
play_pause.addAnimatorListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
play_pause.setMinFrame(90);
}
});
play_pause.resumeAnimation();
isPlaying = true;
}
}
});
person
muxammed
schedule
09.01.2020
Это то, что я ищу. Это работает отлично. Спасибо!
- person leegor; 09.01.2020
Добро пожаловать))
- person muxammed; 09.01.2020