话不都说,也不知道说啥,看代码就够:

package com.load.anim;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import android.animation.ValueAnimator;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.view.animation.LinearInterpolator;/** * Created by admin on 2016/11/1. */public class LoadingCircularRing extends View {    private ValueAnimator valueAnimator;    private Paint mPaint;    private float startAngle = 0f;    private int mWidth;    private int mPadding;    public LoadingCircularRing(Context context) {        this(context,null);    }    public LoadingCircularRing(Context context, AttributeSet attrs) {        this(context, attrs,0);    }    public LoadingCircularRing(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        initPaint();    }    private void initPaint() {        mPaint = new Paint();        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setAntiAlias(true);        mPaint.setColor(Color.WHITE);        mPaint.setStrokeWidth(8);    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        setMeasuredDimension(100,100);        mWidth = getMeasuredWidth();        mPadding = 5;    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        mPaint.setColor(Color.parseColor("#88FFFFFF"));        canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2 - mPadding, mPaint);        mPaint.setColor(Color.WHITE);        RectF rectF = new RectF(mPadding, mPadding, mWidth - mPadding, mWidth - mPadding);        canvas.drawArc(rectF, startAngle, 60, false, mPaint);//第四个参数是否显示半径    }    public void startAnim() {        stopAnim();        startViewAnim(0f, 1f, 800);    }    public void stopAnim() {        if (valueAnimator != null) {            clearAnimation();            valueAnimator.setRepeatCount(0);//-1表示无限循环            valueAnimator.cancel();            valueAnimator.end();        }    }    private ValueAnimator startViewAnim(float startF, final float endF, long time) {        valueAnimator = ValueAnimator.ofFloat(startF, endF);        valueAnimator.setDuration(time);        valueAnimator.setInterpolator(new LinearInterpolator());        valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//无限循环        valueAnimator.setRepeatMode(ValueAnimator.RESTART);//        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator valueAnimator) {                float value = (float) valueAnimator.getAnimatedValue();                startAngle = 360 * value;                invalidate();            }        });        valueAnimator.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                super.onAnimationEnd(animation);            }        });        if (!valueAnimator.isRunning()) {            valueAnimator.start();        }        return valueAnimator;    }    @Override    protected void onWindowVisibilityChanged(int visibility) {        super.onWindowVisibilityChanged(visibility);        if(visibility==View.VISIBLE){            startAnim();        }else{            stopAnim();        }    }}
效果:

android 加载进度条动画_第1张图片


更多相关文章

  1. Android ListView异步加载网络图片
  2. android加载进度条
  3. android 加载 网络图片
  4. android中异步加载图片信息
  5. android UI控件之webview控件使用实例:加载网页到webview中
  6. android ImageLoader加载本地图片的工具类
  7. Android WebView加载https网页(亲测)
  8. Android中的GridView图片异步加载
  9. Android 加载图片传到另一个页面 关于回调

随机推荐

  1. Android驱动程序开发实例精讲-0_Android
  2. Android Studio http proxy And SDK Mana
  3. Android Studio 获取数字签名信息
  4. (原创)Android手动回收bitmap,引发Canvas
  5. androidのMMS短信发送过程(三)
  6. JS判断设备终端(PC,iPad,iPhone,android,winPh
  7. Android连接SQLite数据库
  8. 【Android开发小记--6】动画--属性动画以
  9. android应用程序组件之间的通讯
  10. IDE不对更新android studio后出现Please