Android加载动画系列——CircularCDLoadingAnim

来源:互联网 发布:板报排版 预防网络诈骗 编辑:程序博客网 时间:2024/06/05 16:36

Android加载动画系列——CircularCDLoadingAnim

       小编在逛掘金社区的时候,一不小心看到了一篇讲加载动画的文章,于是点进去看了看,被这些炫酷的加载动画深深地吸引了,于是小编觉得有必要自己动手记录一下这些炫酷的动画,顺便丰富一下自己的学习笔记。

       让我们先来看看效果图:


       在此我就不做过多的分析,直接上源码。

1、CircularCDLoadingAnim.java源码如下:

public class CircularCDLoadingAnim extends View {    private Paint mPaint;    private float mWidth = 0f;    private float mPadding = 0f;    RotateAnimation mRotateAnimation;    RectF rectF = new RectF();    RectF rectF2 = new RectF();    public CircularCDLoadingAnim(Context context) {        this(context, null);    }    public CircularCDLoadingAnim(Context context, AttributeSet attrs) {        this(context, attrs, 0);    }    public CircularCDLoadingAnim(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        initPaint();    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        if (getMeasuredWidth() > getHeight())            mWidth = getMeasuredHeight();        else            mWidth = getMeasuredWidth();        mPadding = 5;    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.save();        mPaint.setStrokeWidth(2);        canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2 - mPadding, mPaint);        mPaint.setStrokeWidth(3);        canvas.drawCircle(mWidth / 2, mWidth / 2, mPadding, mPaint);        mPaint.setStrokeWidth(2);        rectF = new RectF(mWidth / 2 - mWidth / 3, mWidth / 2 - mWidth / 3,                mWidth / 2 + mWidth / 3, mWidth / 2 + mWidth / 3);        canvas.drawArc(rectF, 0, 80, false, mPaint);        canvas.drawArc(rectF, 180, 80, false, mPaint);        rectF2 = new RectF(mWidth / 2 - mWidth / 4, mWidth / 2 - mWidth / 4,                mWidth / 2 + mWidth / 4, mWidth / 2 + mWidth / 4);        canvas.drawArc(rectF2, 0, 80, false, mPaint);        canvas.drawArc(rectF2, 180, 80, false, mPaint);        canvas.restore();    }    private void initPaint() {        mPaint = new Paint();        mPaint.setAntiAlias(true);        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setColor(Color.WHITE);        mRotateAnimation = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF,                0.5f, Animation.RELATIVE_TO_SELF, 0.5f);        mRotateAnimation.setRepeatCount(-1);        mRotateAnimation.setInterpolator(new LinearInterpolator());        mRotateAnimation.setFillAfter(true);    }    public void startAnim() {        stopAnim();        mRotateAnimation.setDuration(1500);        startAnimation(mRotateAnimation);    }    public void stopAnim() {        clearAnimation();    }}
 

 

2、接下来就是如何使用的问题,首先我们需要在layout中引用自定义的动画控件,如下所示:

<com.cyril.loadinganim.CircularCDLoadingAnim    android:id="@+id/circularcd"    android:layout_width="50dp"    android:layout_height="50dp" />

 

3、然后在相关的Activity中实现动画的播放和停止,使用事例如下:

circularCDLoadingAnim = (CircularCDLoadingAnim) findViewById(R.id.circularcd);circularCDLoadingAnim.startAnim();
 

4、  最后小编双手奉上源码的下载地址:http://download.csdn.net/detail/zhimingshangyan/9582830

 

1 0
原创粉丝点击