gpt4 book ai didi

Android ValueAnimator 正弦波

转载 作者:行者123 更新时间:2023-11-29 21:02:28 30 4
gpt4 key购买 nike

我有一个 Custom ViewGroup 类和我添加到其中的图像。当点击屏幕时,我想为添加的图像设置动画,使其以波浪状模式在屏幕上移动。我现在所拥有的在下面,但是尽管图像以波浪状模式移动,但它跳得太快而且很模糊。我怎样才能减慢它的速度以稳定地移动?

    ValueAnimator animator = ValueAnimator.ofFloat(0, 1); // values from 0 to 1
if(animateImage) {
incrementalValue = 0f;
animator.setDuration(4000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = ((Float) (animation.getAnimatedValue()))
.floatValue();
float amplitude = 100f;
mImage.setTranslationX(incrementalValue);
mImage.setTranslationY((float) (amplitude * Math.sin((incrementalValue) * Math.PI)));
incrementalValue += 5f;
}
});
animator.setTarget(mImage);
animator.start();
}

最佳答案

您在 onAnimationUpdate 中声明了一个浮点值 value 并且永远不会再使用它。图像转换的计算是 mImage.setTranslationY((float) (amplitude * Math.sin((incrementalValue) * Math.PI)));。如果您插入值并且 incrementalValue ( = 0) 没有改变,则此计算将始终返回 0,因为 sin(0) = 0 并且乘法中的一个 0 使乘积为 0。您应该插入animator.getAnimatedValue 用于 incrementalValue。此外,我建议您将计算更改为 sin(animator.getAnimatedValue()*PI*2) 这使得正弦波的波长为 1 sin(x*pi*2)每重复一次动画,图像就会上下移动一次,并且在瞄准重新开始时不会跳跃。

注意您仍然可以乘以幅度使图像移动一定距离。

关于Android ValueAnimator 正弦波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612237/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com