安卓带百分比的进度条显示

时间:2021-11-22 18:50:04

继承进度条代码:
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);