这个进度条可以反映真实进度,并且完成百分比的文字时随着进度增加而移动的,所在位置也恰好是真实完成的百分比位置,效果如下:
思路如下:第一部分是左侧的蓝色直线,代表已经完成的进度;第二部分是右侧灰色的直线,代表未完成的进度;第三部分是红色的百分比的数字百分比文本,显示当前确切的完成进度。
最关键的部分就是要确定百分比文本的确切位置,这里用了paint的getTextBounds方法,得到文本的宽高,然后再精确确定它的位置。
view代码如下:
public class NumberProgressView extends View {
/**
* 进度条画笔的宽度(dp)
*/
private int paintProgressWidth = 3;
/**
* 文字百分比的字体大小(sp)
*/
private int paintTextSize = 20;
/**
* 左侧已完成进度条的颜色
*/
private int paintLeftColor = 0xff67aae4;
/**
* 右侧未完成进度条的颜色
*/
private int paintRightColor = 0xffaaaaaa;
/**
* 百分比文字的颜色
*/
private int paintTextColor = 0xffff0077;
/**
* Contxt
*/
private Context context;
/**
* 主线程传过来进程 0 - 100
*/
private int progress;
/**
* 得到自定义视图的宽度
*/
private int viewWidth;
/**
* 得到自定义视图的Y轴中心点
*/
private int viewCenterY;
/**
* 画左边已完成进度条的画笔
*/
private Paint paintleft = new Paint();
/**
* 画右边未完成进度条的画笔
*/
private Paint paintRight = new Paint();
/**
* 画中间的百分比文字的画笔
*/
private Paint paintText = new P