gpt4 book ai didi

android - 如何使用 ViewPropertyAnimator 生成循环动画?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:36 29 4
gpt4 key购买 nike

我想构建 TextViews 的动画,它在完成后立即重复。

对于我想要动画的每个 View ,我使用下面的代码

final float oldX = v.getX();
final float newX = v.getX() - (float)totalWidth;
final AnimatorListenerAdapter listener = new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
v.setX(oldX);
animFinished = true;

//This line won't compile
//v.animate().setDuration(animDuration).setInterpolator(newsInterpolator)
// .setListener(listener).x(newX);
}
};

v.animate().setDuration(animDuration).setInterpolator(newsInterpolator)
.setListener(listener).x(newX);

我试图将最后一段代码放入 onAnimationEnd 中,但 Java 不会编译,因为它认为对象监听器未初始化。此外,我不认为这种“递归”动画调用是一个好的解决方案,这是我首先想到的。我怀疑是否有一种简单而合理的方法来实现循环属性动画,但我没有找到它,所以我转向这里寻求帮助。

提前致谢

最佳答案

好吧,我要再次回答自己。

TranslateAnimation 类有关于重复动画的方法,所以我用它代替了 ViewPropertyAnimator。

下面的代码似乎可以工作:

            long duration = 1000* ((long)totalWidth / newsScrollSpeed);
System.out.println("totalWidth="+totalWidth);
TranslateAnimation anim = new TranslateAnimation(0,-totalWidth,0,0);
anim.setInterpolator(linearInterpolator);
anim.setDuration(duration);
anim.setRepeatCount(TranslateAnimation.INFINITE);
anim.setRepeatMode(TranslateAnimation.RESTART);

for(i=0;i<this.getChildCount();i++)
{
View v = this.getChildAt(i);

if(v.getId() == R.id.yuruyen_yazi)
{
continue;
}

v.startAnimation(anim);
}

关于android - 如何使用 ViewPropertyAnimator 生成循环动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815784/

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