android中在progressBar上添加文字显示百分比进度
工作中遇到ProgressBar上加文字显示的问题,在网上查了下,发现好多都说可以用TextProgressBar来实现,但具体的使用方法却没有。后来在一个黑客网站发现了一个方法。觉得还不错,所以拿来用了,效果也还行。在此分享一下:
一般的ProgressBar都只是一个光光的条(这里说的都是水平进度条),虽然比不用进度条时给用户的感觉要好,但是如果在形像化的东西上面再加上点文字,将进度描述量化,就可以让用户更加明白当前进度是多少了。
有了需求,就可以开始实现了。
这里的原理就是继承一个ProgressBar,然后重写里面的onDraw()方法。
public class MyProgressBar extends ProgressBar {String text;Paint mPaint;public MyProgressBar (Context context) {super(context);System.out.println("1");initText();}public MyProgressBar (Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);System.out.println("2");initText();}public MyProgressBar (Context context, AttributeSet attrs) {super(context, attrs);System.out.println("3");initText();}@Overridepublic synchronized void setProgress(int progress) {setText(progress);super.setProgress(progress);}@Overrideprotected synchronized void onDraw(Canvas canvas) {super.onDraw(canvas);//this.setText();Rect rect = new Rect();this.mPaint.getTextBounds(this.text, 0, this.text.length(), rect);int x = (getWidth() / 2) - rect.centerX();int y = (getHeight() / 2) - rect.centerY();canvas.drawText(this.text, x, y, this.mPaint);}//初始化,画笔private void initText() {this.mPaint = new Paint();this.mPaint.setColor(Color.WHITE);}//private void setText() {//setText(this.getProgress());//}//设置文字内容private void setText(int progress) {int i = (progress * 1) / this.getMax();this.text = String.valueOf(i) + "%";}}