自定义View实现进度圆环
来源:互联网 发布:三星s4支持3g网络吗 编辑:程序博客网 时间:2024/05/29 03:18
//CircleProgressView实现进度圆环的封装类
package com.bwei.view;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.text.TextUtils;import android.util.AttributeSet;import android.view.View;public class CircleProgressView extends View { private static final String TAG = "CircleProgressBar"; private int mMaxProgress = 100; private int mProgress = 0; private final int mCircleLineStrokeWidth = 8; private final int mTxtStrokeWidth = 2; // 画圆所在的距形区域 private final RectF mRectF; private final Paint mPaint; private final Context mContext; private String mTxtHint1; private String mTxtHint2; public CircleProgressView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; mRectF = new RectF(); mPaint = new Paint(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int width = this.getWidth(); int height = this.getHeight(); if (width != height) { int min = Math.min(width, height); width = min; height = min; } // 设置画笔相关属性 mPaint.setAntiAlias(true); mPaint.setColor(Color.rgb(0xe9, 0xe9, 0xe9)); canvas.drawColor(Color.TRANSPARENT); mPaint.setStrokeWidth(mCircleLineStrokeWidth); mPaint.setStyle(Paint.Style.STROKE); // 位置 mRectF.left = mCircleLineStrokeWidth / 2; // 左上角x mRectF.top = mCircleLineStrokeWidth / 2; // 左上角y mRectF.right = width - mCircleLineStrokeWidth / 2; // 左下角x mRectF.bottom = height - mCircleLineStrokeWidth / 2; // 右下角y // 绘制圆圈,进度条背景 canvas.drawArc(mRectF, -90, 360, false, mPaint); mPaint.setColor(Color.rgb(0xf8, 0x60, 0x30)); canvas.drawArc(mRectF, -90, ((float) mProgress / mMaxProgress) * 360, false, mPaint); // 绘制进度文案显示 mPaint.setStrokeWidth(mTxtStrokeWidth); String text = mProgress + "%"; int textHeight = height / 4; mPaint.setTextSize(textHeight); int textWidth = (int) mPaint.measureText(text, 0, text.length()); mPaint.setStyle(Paint.Style.FILL); canvas.drawText(text, width / 2 - textWidth / 2, height / 2 + textHeight / 2, mPaint); if (!TextUtils.isEmpty(mTxtHint1)) { mPaint.setStrokeWidth(mTxtStrokeWidth); text = mTxtHint1; textHeight = height / 8; mPaint.setTextSize(textHeight); mPaint.setColor(Color.rgb(0x99, 0x99, 0x99)); textWidth = (int) mPaint.measureText(text, 0, text.length()); mPaint.setStyle(Paint.Style.FILL); canvas.drawText(text, width / 2 - textWidth / 2, height / 4 + textHeight / 2, mPaint); } if (!TextUtils.isEmpty(mTxtHint2)) { mPaint.setStrokeWidth(mTxtStrokeWidth); text = mTxtHint2; textHeight = height / 8; mPaint.setTextSize(textHeight); textWidth = (int) mPaint.measureText(text, 0, text.length()); mPaint.setStyle(Paint.Style.FILL); canvas.drawText(text, width / 2 - textWidth / 2, 3 * height / 4 + textHeight / 2, mPaint); } } public int getMaxProgress() { return mMaxProgress; } public void setMaxProgress(int maxProgress) { this.mMaxProgress = maxProgress; } public void setProgress(int progress) { this.mProgress = progress; this.invalidate(); } public void setProgressNotInUiThread(int progress) { this.mProgress = progress; this.postInvalidate(); } public String getmTxtHint1() { return mTxtHint1; } public void setmTxtHint1(String mTxtHint1) { this.mTxtHint1 = mTxtHint1; } public String getmTxtHint2() { return mTxtHint2; } public void setmTxtHint2(String mTxtHint2) { this.mTxtHint2 = mTxtHint2; }}
//主要实现自动++到100%
private void initViews() { mCircleBar = (CircleProgressView) findViewById(R.id.circleProgressbar); count = 0; mCircleBar.setProgress(count); final Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { mCircleBar.setProgress(count); if (count == 100) { Intent intent2 = new Intent(MainActivity.this, UsersActivity.class); startActivity(intent2); timer.cancel(); } count++; } }); } }, 1000, 20);}
阅读全文
0 0
- 自定义view,实现圆环进度
- 自定义View实现进度圆环
- 一个自定义圆环进度View
- Android 自定义View实例之进度圆环
- 自定义view实现圆环功能
- 属性动画+自定义view进度圆环的倒计时
- 自定义进度圆环
- 自定义圆环进度
- [AndroidUI]自定义view(三):实现圆环进度条
- swift3.0 实现自定义圆环进度提示效果
- 安卓自定义圆环进度
- 圆环百分比自定义View
- 自定义view-圆环
- 自定义View圆环
- 自定义View圆环进度条
- 自定义view圆环进度条
- 自定义View圆环
- 自定义view圆环
- TensorFlow实现案例汇集
- VMware虚拟机上配置nginx后,本机无法访问问题
- 关于静态全局变量的一些想法
- Python爬虫(四)——模拟登录imooc实战(利用cookie)
- SpringMVC基础-3-参数绑定
- 自定义View实现进度圆环
- djkstra 我的dijkstra模板
- tomcat版本不支持web项目
- Android+Genymotion开发环境搭建
- css页面布局 week3学习
- RxJava基础操作
- 51nod 1202 子序列个数 (DP) 图解
- android studio 自定义view 带进度条的的圆 画弧 初学者最适合
- 【loli的胡策】联校11.5(lca)