android自定义进度条百分比跟着走,Android自定义View实现水平带数字百分比进度条...
时间: 2024-02-18 10:01:48 浏览: 101
好的,我可以帮你解答这个问题。
首先,要实现带数字百分比的水平进度条,你可以自定义一个 View,然后在 onDraw 方法中绘制进度条和百分比数字。
以下是一个简单的实现:
```java
public class CustomProgressBar extends View {
private int progress;
private Paint paint;
public CustomProgressBar(Context context) {
super(context);
init();
}
public CustomProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL);
paint.setTextSize(100);
paint.setTextAlign(Paint.Align.CENTER);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float width = getWidth();
float height = getHeight();
float centerX = width / 2;
float centerY = height / 2;
// 绘制背景
paint.setColor(Color.GRAY);
canvas.drawRect(0, 0, width, height, paint);
// 绘制进度条
paint.setColor(Color.BLUE);
float progressWidth = progress * width / 100;
canvas.drawRect(0, 0, progressWidth, height, paint);
// 绘制百分比数字
paint.setColor(Color.WHITE);
canvas.drawText(progress + "%", centerX, centerY, paint);
}
public void setProgress(int progress) {
if (progress < 0) {
progress = 0;
} else if (progress > 100) {
progress = 100;
}
this.progress = progress;
invalidate();
}
}
```
然后,要实现百分比跟着进度条走,你可以在 setProgress 方法中调用 invalidate() 方法,强制 View 重新绘制。这样,每次进度改变时,View 都会重新绘制,从而实现百分比数字跟着进度条走的效果。
```java
public void setProgress(int progress) {
if (progress < 0) {
progress = 0;
} else if (progress > 100) {
progress = 100;
}
this.progress = progress;
invalidate(); // 强制 View 重新绘制
}
```
这样,你就可以在代码中通过调用 setProgress 方法来改变进度条的进度,并且百分比数字会跟着进度条走了。
阅读全文