我找到了这个Lottie Play/Pause button,但是我不知道如何在音频播放器暂停时显示播放状态,显示暂停状态并在播放器播放时以均衡器动画重复播放(请参阅抽奖预览)。我已经阅读了文档,但没有这种情况的示例。我对After Effects也没有任何控制动画的知识。

最佳答案

根据Lottie动画,它具有框架,因此,通过操纵此框架,可以实现所需的采样

AnimationView play_pause = findViewById(R.id.play_pause);
play_pause.cancelAnimation();
play_pause.setMinFrame(90);
play_pause.setMaxFrame(175);

这段代码将在90-175的范围内重复播放动画,我已在Lottie的“播放/暂停”按钮上对其进行了测试,因此在单击停止时必须将MaxFrame更改为210,并在动画完成后将循环设置为1,它将在播放图片中停止播放。

这是实现这样的目标的完整代码
android - Lottie Android-如何从一个位置移动到另一个位置并按距离重复?-LMLPHP
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;
            }
        }
    });

关于android - Lottie Android-如何从一个位置移动到另一个位置并按距离重复?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59661636/

10-10 13:27