Android 循环进度条动画

在Android开发中,经常需要展示进度条来提示用户当前操作的进展情况。循环进度条动画是一种常见的进度条效果,它通过不断旋转的动画来表示进度。

本文将介绍如何实现一个循环进度条动画,并提供相应的代码示例。

实现原理

循环进度条动画实际上是一个不断旋转的图片或图标。通过不断更新旋转角度来实现动画效果。

具体实现步骤如下:

  1. 创建一个ImageView来显示进度条图片或图标;
  2. 创建一个ValueAnimator来控制旋转角度的变化;
  3. 在ValueAnimator的更新监听器中更新ImageView的旋转角度;
  4. 启动ValueAnimator,使其开始执行动画。

示例代码

下面是一个使用Android原生动画API实现循环进度条动画的示例代码。

import android.animation.ValueAnimator;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;

public class CircularProgress {

    private ImageView imageView;
    private ValueAnimator animator;

    public CircularProgress(ImageView imageView) {
        this.imageView = imageView;
        initAnimator();
    }

    private void initAnimator() {
        animator = ValueAnimator.ofFloat(0, 360);
        animator.setDuration(2000);
        animator.setInterpolator(new LinearInterpolator());
        animator.setRepeatCount(ValueAnimator.INFINITE);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float angle = (float) animation.getAnimatedValue();
                imageView.setRotation(angle);
            }
        });
    }

    public void start() {
        if (animator != null && !animator.isRunning()) {
            animator.start();
        }
    }

    public void stop() {
        if (animator != null && animator.isRunning()) {
            animator.cancel();
        }
    }
}

在上面的代码中,我们创建了一个CircularProgress类来管理循环进度条动画。其中,imageView是用来显示进度条的ImageView,animator是用来控制旋转角度的ValueAnimator。

initAnimator方法中,我们创建了一个ValueAnimator对象,并设置了动画的起始值为0度,结束值为360度,持续时间为2秒,插值器为线性插值器。设置了重复次数为无限次,并添加了一个动画更新监听器,在每次动画更新时更新ImageView的旋转角度。

start方法用于启动动画,stop方法用于停止动画。

示例应用

下面是一个简单的示例应用,演示了如何使用上述代码实现循环进度条动画。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    private CircularProgress circularProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView = findViewById(R.id.progress_image);
        circularProgress = new CircularProgress(imageView);
    }

    @Override
    protected void onResume() {
        super.onResume();
        circularProgress.start();
    }

    @Override
    protected void onPause() {
        super.onPause();
        circularProgress.stop();
    }
}

在上述代码中,我们在onCreate方法中获取到了用来显示进度条的ImageView,并创建了一个CircularProgress对象。在onResume方法中启动动画,在onPause方法中停止动画。

总结

通过以上代码示例,我们可以看到循环进度条动画的实现步骤。通过使用Android原生动画API,结合旋转角度的变化,我们可以轻松地实现一个循环进度条动画效果。

希望本文对你理解Android循环进度条动画有所帮助!

状态图

下面是循环进度条动画的状态图示例:

stateDiagram
    [*] --> Loading
    Loading --> [*]

饼状图

下面是循环进度条动画的饼状图示例:

pie
    title 循环进度条动画
    "已完成" : 75
    "未完成" : 25

参考链接:

  • [Android Developers - Animation](