android中在progressBar上添加文字显示百分比进度

本文介绍了一种在Android应用中通过继承ProgressBar并重写onDraw()方法来实现带有文字显示的进度条的方法。详细阐述了实现原理、步骤及注意事项,并提供了XML布局文件使用示例。
工作中遇到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();
}

@Override
public synchronized void setProgress(int progress) {
setText(progress);
super.setProgress(progress);
}

@Override
protected 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) + "%";
}
}

这样写后,在xml布局文件中使用时,可能会因为命名空间改变,下面属性无法用代码提示。一个简单的做法就是,先写一个正常的ProgressBar的标记,把属性写完后,再将ProgressBar替换为我们自定义的进度条的完整类名。还有使用自定义的控件后,android的布局预览是看不到效果的,运行到模拟器上就行了。
  最后,使用方法就和普通的ProgressBar差不多。

本篇文章来源于 黑软基地-中国最大的黑客软件安全教程下载站!(手机资讯) 原文链接:http://www.hackvip.com/mobiwen/html/Mobile_250548.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值