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
- Android加载动画系列——CircularCDLoadingAnim
- Android加载动画系列——BalloonLoading
- Android加载动画系列——WaterBottleLoading
- Android加载动画系列——BatteryLoading
- Android加载动画系列——CircularLoadingAnim
- Android加载动画系列——CircularRingLoadingAnim
- Android加载动画系列—— CircularJumpLoadingAnim
- Android加载动画系列—— CircularSmileLoadingAnim
- Android加载动画系列——CircularZoomLoadingAnim
- Android加载动画系列—— LineWithTextLoadingAnim
- Android加载动画系列——WifiLoadingAnim
- Android加载动画系列——PlayBallLoadingAnim
- Android加载动画系列——PlayBallLoadingAnim
- Android加载动画系列——GearsLoadingAnim
- Android加载动画系列——ChromeLogoLoadingAnim
- Android加载动画系列——GearsTwoLoadingAnim
- Android加载动画系列—— GhostLoadingAnim
- Android加载动画系列——FinePoiStarLoadingAnim
- 【codeforces】Bulbs
- node.js 实现一个简单的登录拦截器
- Android 入门技巧
- Web开发之Django框架的学习(2)
- Objective-C & Sprite Kit太空历险记 : 9. 冷冻生化战士——归档
- Android加载动画系列——CircularCDLoadingAnim
- acl库的使用之md5
- hadoop 使用内部RPC技术实现通信
- 说说React的事(二)
- HTML基础知识整理
- linux下执行mysql的sql文件
- MySQL多线程同步MySQL-Transfer介绍
- https交互过程
- 华为721-----内联inline,虚函数virtual