10

画面上で泡のアニメーションをしているのですが、アニメーション時間が終わると泡が止まります。アニメーションを繰り返したり無限にしたりするにはどうすればよいですか?

bub.animate();
bub.animate().x(x2).y(y2);
bub.animate().setDuration(animationTime);       
bub.animate().setListener(new AnimatorListenerAdapter() {

    @Override
    public void onAnimationStart(Animator animation) {
        animators.add(animation); 
    } 

    @Override
    public void onAnimationRepeat(Animator animation) {
    }

    @Override
    public void onAnimationEnd(Animator animation) {
    }
});
4

6 に答える 6

13

ViewPropertyAnimatorは単純なアニメーションにのみ適しているため、より高度なクラスObjectAnimator(基本的にはメソッドsetRepeatCountとさらにsetRepeatMode ) を使用します。

于 2014-08-17T00:08:51.027 に答える
6

使用できますCycleInterpolator。たとえば、次のようにします。

    int durationMs = 60000;
    int cycleDurationMs = 1000;
    view.setAlpha(0f);
    view.animate().alpha(1f)
            .setInterpolator(new CycleInterpolator(durationMs / cycleDurationMs))
            .setDuration(durationMs)
            .start();
于 2016-11-02T16:41:49.537 に答える
0
final ViewPropertyAnimator animator = view.animate().rotation(360).setInterpolator(new LinearInterpolator()).setDuration(1000); //Animator object

    animator.setListener(new android.animation.Animator.AnimatorListener() {
        ...

        @Override
        public void onAnimationEnd(final android.animation.Animator animation) {
            animation.setListener(this); //It listens for animation's ending and we are passing this to start onAniationEnd method when animation ends, So it works in loop
            view.setRotation(0);
            view.animate().rotation(360).setInterpolator(new LinearInterpolator()).setDuration(1000).setListener(this).start();
        }

    });
于 2018-06-30T16:53:40.257 に答える