首页 > 解决方案 > 如何在java中重复Android动画?

问题描述

我这里有这个代码。我希望 Imageview 做 5 次动画。我需要如何设置 setRepeatCount?怎么消毒呢?

private void flipCoin() {
    final Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher_background);
    final ImageView iv = ((ImageView) findViewById(R.id.imageView));
    iv.setRotationY(0f);
    //iv.animate().setDuration(10);
    iv.animate().rotationY(90f).setListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
        }

        @Override
        public void onAnimationEnd(Animator animation) {
            iv.setImageDrawable(drawable);
            iv.setRotationY(270f);
            iv.animate().rotationY(360f).setListener(null);

        }

        @Override
        public void onAnimationCancel(Animator animation) {
        }
    });

标签: javaandroidanimation

解决方案


方法 setRepeatCount 属于Animation类,您正在使用Animator

尝试这个:

int times = 5;

private void flipCoin() {
    final Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher_background);
    final ImageView iv = findViewById(R.id.imageView);
    iv.setRotationY(0f);
    //iv.animate().setDuration(10);
    final ViewPropertyAnimator viewPropertyAnimator = iv.animate();
    viewPropertyAnimator.rotationY(90f);
    viewPropertyAnimator.setListener(new Animator.AnimatorListener() {

        @Override
        public void onAnimationStart(Animator animation) {
        }

        @Override
        public void onAnimationRepeat(Animator animation) {
        }

        @Override
        public void onAnimationEnd(Animator animation) {

            times--;
            if (times > 0) {
                iv.setImageDrawable(drawable);
                iv.setRotationY(270f);
                viewPropertyAnimator.rotationY(360f);
                viewPropertyAnimator.start(); //Restart
            }
        }

        @Override
        public void onAnimationCancel(Animator animation) {
        }
    });

    viewPropertyAnimator.start(); //Init
}

推荐阅读