package com.lechange.demo.view;
|
|
import android.content.Context;
|
import android.graphics.Canvas;
|
import android.graphics.Paint;
|
import android.graphics.Rect;
|
import android.util.AttributeSet;
|
import android.widget.ProgressBar;
|
|
import com.lechange.demo.R;
|
|
public class LcProgressBar extends ProgressBar {
|
|
private final Paint progressPaint = new Paint();
|
private Context context;
|
private String content = getResources().getString(R.string.lc_demo_device_update);
|
private int textColor = getResources().getColor(R.color.lc_demo_color_0B8C0D);
|
|
public LcProgressBar(Context context) {
|
this(context, null);
|
}
|
|
public LcProgressBar(Context context, AttributeSet attrs) {
|
this(context, attrs, 0);
|
}
|
|
public LcProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
|
super(context, attrs, defStyleAttr);
|
this.context = context;
|
init();
|
}
|
|
private void init() {
|
progressPaint.setStrokeWidth(4);
|
progressPaint.setStyle(Paint.Style.FILL);
|
progressPaint.setColor(textColor);
|
progressPaint.setTextSize(dip2Px(context.getResources().getDimensionPixelSize(R.dimen.px_12)));
|
progressPaint.setTextAlign(Paint.Align.CENTER);
|
progressPaint.setAntiAlias(true);
|
}
|
|
private int dip2Px(int dip) {
|
float density = context.getResources().getDisplayMetrics().density;
|
int px = (int) (dip * density + 0.5f);
|
return px;
|
}
|
|
@Override
|
protected synchronized void onDraw(Canvas canvas) {
|
super.onDraw(canvas);
|
Rect rect = new Rect();
|
progressPaint.getTextBounds(this.content, 0, this.content.length(), rect);
|
int x = (getWidth() / 2) ;
|
int y = (getHeight() / 2) - rect.centerY();
|
canvas.drawText(this.content, x, y, this.progressPaint);
|
}
|
|
public void setText(String text) {
|
this.content = text;
|
postInvalidate();
|
}
|
|
public String getText(){
|
return content;
|
}
|
|
public void setTextColor(int color) {
|
this.textColor = color;
|
progressPaint.setColor(textColor);
|
postInvalidate();
|
}
|
}
|