我有一个使用Lottie制作的动画,效果很好,问题是,假设我的动画是一个会不断成长和收缩的球(就像它在跳动一样),当用户按下该球时,我需要它'成长为以其最大尺寸”,因此我需要将动画进度设置为1(对吗?)。
效果很好,但是问题是我希望球“增长”直到达到最大大小,而不只是在一秒钟之内从0变到1,有人知道如何做吗? (对不起,如果我的问题表达得不好...)
这是我尝试编写的代码:(此代码使球在不到一秒钟的时间内从0变到1,而不是像它在增长一样)
LottieAnimationView unclickedAnimation = ...
unclickedAnimation.pauseAnimation();
float currentProgress = unclickedAnimation.getProgress();
for(float i = currentProgress; i < 1.0f; i += 0.01f) {
unclickedAnimation.setProgress(i);
}
已经感谢
使用当前代码,您只需将动画设置为显示特定的帧。您想要设置maxProgress,然后播放动画。
因此,如果您希望它从一半大小变为完整大小,则可以从maxProgress(0.5f);开始并在此处暂停。当用户单击时,您可以设置新参数:
unclickedAnimation.setMaxProgress(1f);
unclickedAnimation.resumeAnimation();
如果我能够正确理解您的问题,我想您需要做的就是单击LottieAnimationView
来播放Lottie动画。以下代码可以帮助您理解。
说您的动画json从最小的球变成最大,然后-
unclickedAnimation.setOnClickListener(v -> {
unclickedAnimation.playAnimation();
});
此外,如果要循环播放或设置动画的最大帧/最小帧,可以使用-
unclickedAnimation.loop(true);
unclickedAnimation.setMaxProgress(/*value here*/);