继承进度条代码:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.ProgressBar;
public class PecentProgress extends ProgressBar {
String text;
Paint Paint;
public PecentProgress(Context context) {
super(context);
// TODO Auto-generated constructor stub
System.out.println("1");
initText();
}
public PecentProgress(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
System.out.println("2");
initText();
}
public PecentProgress(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
System.out.println("3");
initText();
}
@Override
public synchronized void setProgress(int progress) {
// TODO Auto-generated method stub
setText(progress);
super.setProgress(progress);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
//this.setText();
Rect rect = new Rect();
this.Paint.getTextBounds(this.text, 0, this.text.length(), rect);
int x = (getWidth() / 2) - rect.centerX();
int y = (getHeight() / 2) - rect.centerY();
canvas.drawText(this.text, x, y, this.Paint);
}
//初始化
private void initText(){
this.Paint = new Paint();
this.Paint.setColor(Color.BLUE);
}
private void setText(){
setText(this.getProgress());
}
//设置文字内容
private void setText(int progress){
int i = (progress * 100)/this.getMax();
this.text = String.valueOf(i) + "%";
}
}
页面代码
<com.example.utils.PecentProgress 上面精度条继承类所在的包
android:id="@+id/load_proj_bar"
android:max="100"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_heightPercent="80%" //安卓百分比
app:layout_widthPercent="90%"
style="@android:style/Widget.ProgressBar.Horizontal"
android:visibility="visible"
/>
//初始化
private PecentProgress progress = null;
pros = (PecentProgress ) findViewById(R.id.load_proj_bar);
//开启子线程,设置进度条
pros .setMax(100);
pros .setProgress(0);