效果图

Screenshot_2017-08-28-14-50-54-987_com.baidu.lbs..png
public class ComLoadingView extends Button {    private Paint mPaint;    private float mWidth = 0f;    private float mHeight = 0f;    private float mMaxRadius = 9;    private float mPadding = 21;    private int circularCount = 3;    private int mJumpValue = 0;    private int mAniTime = 250;    private int hightColor = 0xFFFFFFFF;    private int middleColor = 0xCCFFFFFF;    private int lowColor = 0x44FFFFFF;    private boolean mIsRest = false;    private final Handler mHandler = new Handler(Looper.getMainLooper());    private Runnable mUpdateTimeRunner = new Runnable() {        @Override        public void run() {            mJumpValue--;            postInvalidate();            mHandler.removeCallbacks(mUpdateTimeRunner);            mHandler.postDelayed(mUpdateTimeRunner, mAniTime);        }    };    public ComLoadingView(Context context, AttributeSet attrs) {        super(context, attrs);    }    private void initPaint(int jumpValue) {        mPaint = new Paint();        mPaint.setAntiAlias(true);        mPaint.setStyle(Paint.Style.FILL);        if (jumpValue == 0) {            mPaint.setColor(hightColor);        } else if (jumpValue == -1) {            mPaint.setColor(middleColor);        } else {            mPaint.setColor(lowColor);        }    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        if (!isEnabled() && mIsRest) {            float startDistance = mWidth / 2 - mPadding - mMaxRadius * 2;            for (int i = 0; i < circularCount; i++) {                int index = (i + mJumpValue) % circularCount;                initPaint(index);                canvas.drawCircle(startDistance + i * (mPadding + mMaxRadius * 2), mHeight / 2, mMaxRadius, mPaint);            }        }    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        mWidth = getMeasuredWidth();        mHeight = getMeasuredHeight();    }    public void startAnim() {        stopAnim();        mIsRest = true;        mHandler.post(mUpdateTimeRunner);    }    public void stopAnim() {        if (mHandler != null) {            mIsRest = false;            mJumpValue = 0;            mHandler.removeCallbacks(mUpdateTimeRunner);            invalidate();        }    }}

更多相关文章

  1. android效果图之轮播
  2. android canvas 编辑bitmap画虚线
  3. Android实现拖拉移动Item
  4. 整理了下viewpagerTransformers框架的效果图
  5. 适配器与Activity之间相互传值
  6. android TabActivity用法
  7. Android(安卓)自定义控件一 带圆形进度的按钮 ControlButton2
  8. Android仿简书、淘宝等APP View弹出效果
  9. Android对话框实现

随机推荐

  1. Android(安卓)SQLite总结[转载]
  2. android下使用icon
  3. Android做了些什么?
  4. 我的Android进阶之旅------>Android视频
  5. Android maxLines maxLength属性
  6. 改变Android屏幕默认启动方向为横向
  7. android listview 设置点击效果selector
  8. How to root android emulator (Android
  9. Android 常用的画图方法
  10. Android中Sample的使用方法