Android(安卓)控件之进度加载
16lz
2021-01-26
效果图
Screenshot_2017-08-28-14-50-54-987_com.baidu.lbs..pngpublic 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(); } }}
更多相关文章
- android效果图之轮播
- android canvas 编辑bitmap画虚线
- Android实现拖拉移动Item
- 整理了下viewpagerTransformers框架的效果图
- 适配器与Activity之间相互传值
- android TabActivity用法
- Android(安卓)自定义控件一 带圆形进度的按钮 ControlButton2
- Android仿简书、淘宝等APP View弹出效果
- Android对话框实现