Android 运行 循环动画 view.animate()

Android run animation in loop with view.animate()

我想启动一个按钮的动画。动画效果很好,但我希望动画会重复。我怎样才能做到这一点?几天来我一直在寻找答案。 我的代码:

floatingActionButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Start the animation
        v.animate().setDuration(200)
                .setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        super.onAnimationEnd(animation);
                    }
                })
                // Rotate
                .rotation(rotated ? 0f : 135f)
                // Move up in first click, and down in second
                .translationY(rotated ? 0f : -200f);
        rotated = !rotated;
    }
});

我可以“永远”重复这个动画吗?

ViewPropertyAnimator 主要用于良好的基础知识。尝试使用更高级的ObjectAnimator class which gives you basically what you need: method setRepeatCount and additionally setRepeatMode.

如果您仍想使用 view.animate(),您可以像这样编写一些技巧:

floatingActionButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        repeatAnimation(v);
    }
});
private void repeatAnimation(View v) {
    // Start the animation
    v.animate().setDuration(200)
            .setListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    super.onAnimationEnd(animation);
                    rotated = !rotated;
                    repeatAnimation(v);
                }
            })
            // Rotate
            .rotation(rotated ? 0f : 135f)
            // Move up in first click, and down in second
            .translationY(rotated ? 0f : -200f);
}