public class TextProgressView extends AppCompatSeekBar {
private Paint mPaint;
private Rect mRect;
private String mText;
public TextProgressView (@NonNull Context context) {
this(context, null);
}
public TextProgressView (@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public TextProgressView (@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
setClickable(false);
setFocusable(false);
setFocusableInTouchMode(false);
setMax(100);
setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
}
private void initView() {
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mPaint.setTextSize(PixelFormat.dip2px(getContext(), 12));
mPaint.setAntiAlias(true);
mRect = new Rect();
mText = "";
}
@Override
protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (TextUtils.isEmpty(this.mText)) return;
mPaint.getTextBounds(this.mText, 0, this.mText.length(), mRect);
float progressRatio = (float) getProgress() / getMax();
canvas.drawText(this.mText, getWidth() * progressRatio - mRect.width()/2f, (getHeight() / 2f) - mRect.centerY(), mPaint);
}
public void setKaihuProgress(int progress) {
this.mText = progress + "%";
setProgress(progress);
}
}
带文字的进度条
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 文字在中间的进度条件,主要思路是文字覆盖到一根线上。然后使用PorterDuffXfermode处理文字的bitm...
- 使用 Download :1.1.0 其中 '+' 请填写版本号 Download 后的最新版本 欢迎star,G...