gistfile1.txt 重写onDraw方法实现, @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //背景 mPaint.setColor(progressbtn_backgroud_color); RectF r1 = new RectF(0, 0, width, height); canvas.drawRoundRect(r1, radi
重写onDraw方法实现, @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //背景 mPaint.setColor(progressbtn_backgroud_color); RectF r1 = new RectF(0, 0, width, height); canvas.drawRoundRect(r1, radius, radius, mPaint); //进度 mPaint.setColor(progressbtn_backgroud_second_color); int newWidth = progress * space; if (newWidth >= width) { newWidth = width; } RectF r2 = new RectF(0, 0, newWidth, height); canvas.drawRoundRect(r2, radius, radius, mPaint); //字体 if (progress == 0) { text = "开始"; } else if (progress >= 100) { text = "结束"; } else { text = "下载中 " + progress + " % "; } //获取文字的高宽 Rect rect = new Rect(); mTextPaint.getTextBounds(text, 0, text.length(), rect); int textWidth = rect.width();//文本的宽度 canvas.drawText(text, (width - textWidth) / 2, height / 2, mTextPaint); postDelayed(runnable, 30); } 线程控制 private Runnable runnable = new Runnable() { @Override public void run() { if (!isStart) { return; } if (progress > 100) { return; } progress++; postInvalidate(); } }; public void start() { //进度 isStart = true; post(runnable); } public void pause() { //进度 isStart = false; post(runnable); }