大佬教程收集整理的这篇文章主要介绍了Android自定义漂亮的圆形进度条,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这几天对Android中实现画圆弧及圆弧效果中所实现的效果进行了修改,改为进度圆心进度条,效果如图所示
TasksCompletedView.java 代码如下
import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.Paint.FontMetrics; import android.util.AttributeSet; import android.view.View; import com.snailws.taskscompleted.R; /** * @author naiyu(http://snailws.com) * @version 1.0 */ public class TasksCompletedView extends View { // 画实心圆的画笔 private Paint mCirclePaint; // 画圆环的画笔 private Paint mRingPaint; // 画字体的画笔 private Paint mTextPaint; // 圆形颜色 privatE int mCircleColor; // 圆环颜色 privatE int mRingColor; // 半径 private float mRadius; // 圆环半径 private float mRingRadius; // 圆环宽度 private float mstrokeWidth; // 圆心x坐标 privatE int mXCenter; // 圆心y坐标 privatE int mYCenter; // 字的长度 private float mTxtWidth; // 字的高度 private float mTxtHeight; // 总进度 privatE int m@R_914_10586@lProgress = 100; // 当前进度 privatE int mProgress; public TasksCompletedView(Context context,AttributeSet attrs) { super(context,attrs); // 获取自定义的属性 initAttrs(context,attrs); initVariable(); } private void initAttrs(Context context,AttributeSet attrs) { TypedArray typeArray = context.getTheme().obtainStyledAttributes(attrs,R.styleable.TasksCompletedView,0); mRadius = typeArray.getDimension(R.styleable.TasksCompletedView_radius,80); mstrokeWidth = typeArray.getDimension(R.styleable.TasksCompletedView_strokeWidth,10); mCircleColor = typeArray.getColor(R.styleable.TasksCompletedView_circleColor,0xFFFFFFFF); mRingColor = typeArray.getColor(R.styleable.TasksCompletedView_ringColor,0xFFFFFFFF); mRingRadius = mRadius + mstrokeWidth / 2; } private void initVariable() { mCirclePaint = new Paint(); mCirclePaint.setAntiAlias(true); mCirclePaint.setColor(mCircleColor); mCirclePaint.setStyle(Paint.Style.FILL); mRingPaint = new Paint(); mRingPaint.setAntiAlias(true); mRingPaint.setColor(mRingColor); mRingPaint.setStyle(Paint.Style.stroke); mRingPaint.setstrokeWidth(mstrokeWidth); mTextPaint = new Paint(); mTextPaint.setAntiAlias(true); mTextPaint.setStyle(Paint.Style.FILL); mTextPaint.setARGB(255,255,255); mTextPaint.setTextSize(mRadius / 2); FontMetrics fm = mTextPaint.getFontMetrics(); mTxtHeight = (int) Math.ceil(fm.descent - fm.ascent); } @Override protected void onDraw(Canvas canvas) { mXCenter = getWidth() / 2; mYCenter = getHeight() / 2; canvas.drawCircle(mXCenter,mYCenter,mRadius,mCirclePaint); if (mProgress > 0 ) { RectF oval = new RectF(); oval.left = (mXCenter - mRingRadius); oval.top = (mYCenter - mRingRadius); oval.right = mRingRadius * 2 + (mXCenter - mRingRadius); oval.bottom = mRingRadius * 2 + (mYCenter - mRingRadius); canvas.drawArc(oval,-90,((float)mProgress / m@R_914_10586@lProgress) * 360,false,mRingPaint); // // canvas.drawCircle(mXCenter,mRadius + mstrokeWidth / 2,mRingPaint); String txt = mProgress + "%"; mTxtWidth = mTextPaint.measureText(txt,txt.length()); canvas.drawText(txt,mXCenter - mTxtWidth / 2,mYCenter + mTxtHeight / 4,mTextPaint); } } public void setProgress(int progress) { mProgress = progress; // invalidate(); posTinvalidate(); } }
attrs.xml
<?xml version="1.0" encoding="utf-8"?> <@R_874_5550@es> <declare-styleable name="TasksCompletedView"> <attr name="radius" format="dimension"/> <attr name="strokeWidth" format="dimension"/> <attr name="circleColor" format="color"/> <attr name="ringColor" format="color"/> </declare-styleable> </@R_874_5550@es>
源码下载:http://xiazai.code.net/201701/yuanma/AndroidCompleted(code.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的Android自定义漂亮的圆形进度条全部内容,希望文章能够帮你解决Android自定义漂亮的圆形进度条所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。