水平进度条,显示进度的文本随着进度而移动。

效果如下,截的静态图。

代码如下 TextProgressBar.java


public class TextProgressBar extends ProgressBar {

    private Paint mPaint;
private String text;
private float rate; public TextProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
initView();
} public TextProgressBar(Context context) {
super(context);
initView();
} private void initView() { mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLUE);
} @Override
public synchronized void setProgress(int progress) {
setText(progress);
super.setProgress(progress);
} private void setText(int progress) {
rate = progress * 1.0f / this.getMax();
int i = (int) (rate * 100);
this.text = String.valueOf(i) + "%";
} @Override
protected synchronized void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Rect rect = new Rect();
mPaint.getTextBounds(text, 0, this.text.length(), rect);
// int x = (getWidth()/2) - rect.centerX();
// int y = (getHeight()/2) - rect.centerY();
int x = (int) (getWidth() * rate);
if (x == getWidth()) {
// 如果为百分之百则在左边绘制。
x = getWidth() - rect.right;
} int y = (getHeight() / 2) - rect.top;
mPaint.setTextSize(22);
canvas.drawText(text, x, y, mPaint);
} }

 

xml

    <com.example.my_downloader.TextProgressBar
android:id="@+id/pgb_percentage"
android:layout_width="match_parent"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:layout_height="wrap_content"/>

最新文章

  1. JQuery的基础和应用
  2. Java集合之LinkedHashMap
  3. jsp前3章试题分析
  4. Java 集合常用方法锦集
  5. ORGANIZATION
  6. LightOJ1079 Just another Robbery(DP)
  7. tomcat 默认项目设置
  8. Bootstrap排版
  9. 1024: [SCOI2009]生日快乐 - BZOJ
  10. Pascal向C++的跨越
  11. Lamda Action Func Thread 实例
  12. ajax跨域实现api 接口调用
  13. cJSON 库的使用和优化
  14. [BZOJ]1071 组队(SCOI2007)
  15. n个并发进程共用一个公共变量Q,写出用信号灯实现n个进程互斥的程序描述,给出信号灯值得取值范围,并说明每个取值范围的物理意义。
  16. ORACLE报错和解决方案
  17. python中内建函数isinstance的用法
  18. Python实现鸢尾花数据集分类问题——基于skearn的SVM
  19. Selenium WebDriver使用IE浏览器 属性设置
  20. grub24dos

热门文章

  1. bat 操作数据库(附加,分离,删除,还原)
  2. hdu2328(后缀数组 + 二分)
  3. loj #6235. 区间素数个数 min_12.5筛
  4. Python学习之路--1.0 Python概述及基本数据类型
  5. 过河卒 NOIp 2002 dp
  6. 利用zookeeper生成唯一id,通用性代码
  7. maven 项目 配置docker镜像生成(dockerfile-maven-plugin)
  8. Unity 动画系统目录 之 Animation
  9. vim 常用配置项
  10. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_类型转换