Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)
2024-10-19 13:34:23
水平进度条,显示进度的文本随着进度而移动。
效果如下,截的静态图。
代码如下 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"/>
最新文章
- JQuery的基础和应用
- Java集合之LinkedHashMap
- jsp前3章试题分析
- Java 集合常用方法锦集
- ORGANIZATION
- LightOJ1079 Just another Robbery(DP)
- tomcat 默认项目设置
- Bootstrap排版
- 1024: [SCOI2009]生日快乐 - BZOJ
- Pascal向C++的跨越
- Lamda Action Func Thread 实例
- ajax跨域实现api 接口调用
- cJSON 库的使用和优化
- [BZOJ]1071 组队(SCOI2007)
- n个并发进程共用一个公共变量Q,写出用信号灯实现n个进程互斥的程序描述,给出信号灯值得取值范围,并说明每个取值范围的物理意义。
- ORACLE报错和解决方案
- python中内建函数isinstance的用法
- Python实现鸢尾花数据集分类问题——基于skearn的SVM
- Selenium WebDriver使用IE浏览器 属性设置
- grub24dos
热门文章
- bat 操作数据库(附加,分离,删除,还原)
- hdu2328(后缀数组 + 二分)
- loj #6235. 区间素数个数 min_12.5筛
- Python学习之路--1.0 Python概述及基本数据类型
- 过河卒 NOIp 2002 dp
- 利用zookeeper生成唯一id,通用性代码
- maven 项目 配置docker镜像生成(dockerfile-maven-plugin)
- Unity 动画系统目录 之 Animation
- vim 常用配置项
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_类型转换