关于progressX + textWidth 的问题,
如果我现在是已经 progresX+textWidth = mRealWidth , 那么我剩余部分的进度变化,岂不是没法在进度条上面提现出来了么?
如果我现在是已经 progresX+textWidth = mRealWidth , 那么我剩余部分的进度变化,岂不是没法在进度条上面提现出来了么?
2016-09-28
是的,textWidth和mTextOffset 需要暂用空间,这种方法会导致最后变化不会在进度条上产生变化,但是文本会变化。如果先从mRealWidth中减去textWidth和mTextOffset。在没到100%以前,进度条后面有空白,如果是动画n%到100%。进度条和数字都会变化。但是显示效果不如之前的。附上减去之后的代码,去体会下
String text = getProgress() + "%";
float radio = getProgress() * 1.0f / getMax();
int textWidth = (int) mPaint.measureText(text);
float realWidth = mRealWidth - textWidth - mTextOffset;
float progressX = radio * realWidth;
if (progressX > 0){
mPaint.setColor(mRechColor);
mPaint.setStrokeWidth(mRechHeight);
canvas.drawLine(0,0,progressX,0,mPaint);
}
mPaint.setColor(mTextColor);
float y = (int) (- (mPaint.ascent() + mPaint.descent()) / 2);
float textStartX = progressX + mTextOffset / 2;
canvas.drawText(text,textStartX,y,mPaint);
float startX = progressX + mTextOffset + textWidth;
if (startX < realWidth){
mPaint.setColor(mUnRechColor);
mPaint.setStrokeWidth(mUnRechHeight);
canvas.drawLine(startX,0,realWidth,0,mPaint);
}举报