手机环圈编程通常涉及到自定义View并绘制环形进度条。以下是一个简单的示例,展示如何创建一个自定义的View并绘制环形进度条。
创建自定义View类
继承自`View`类。
在`onDraw`方法中绘制环形进度条。
定义属性
`MaxBgStrokeWidth`:环形背景的最大宽度。
`CricleBarStrokeWidth`:环形进度条的宽度。
`MaxBgColor`:环形背景的颜色。
`barColor`:环形进度条的颜色。
`smallMaxBgColor`:环形背景的小圆环颜色。
`progress`:进度条的当前进度(0-100)。
`ChangeCircleAngle`:进度条改变的角度。
`startAngle`:进度条起始角度。
绘制环形进度条
使用`Canvas`对象绘制环形背景。
根据进度计算并绘制进度条。
```java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class ProgressBar extends View {
private int MaxBgStrokeWidth = 20;
private int CricleBarStrokeWidth = 10;
private int MaxBgColor = Color.parseColor("2374fa");
private int barColor = Color.WHITE;
private int smallMaxBgColor = Color.parseColor("0652c1");
private int progress = 0;
private int ChangeCircleAngle = 140;
private int startAngle = 120;
private Paint mPaintBg;
private Paint mPaintSmallBg;
public ProgressBar(Context context) {
super(context);
init();
}
public ProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaintBg = new Paint();
mPaintBg.setColor(MaxBgColor);
mPaintBg.setAntiAlias(true);
mPaintSmallBg = new Paint();
mPaintSmallBg.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int centerX = getWidth() / 2;
int centerY = getHeight() / 2;
int radius = Math.min(getWidth(), getHeight()) / 2 - CricleBarStrokeWidth / 2;
// 绘制环形背景
canvas.drawArc(new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius), startAngle, 360, false, mPaintBg);
// 绘制环形进度条
int endAngle = startAngle + (progress * ChangeCircleAngle / 100);
canvas.drawArc(new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius), startAngle, endAngle, false, mPaintSmallBg);
}
public void setProgress(int progress) {
this.progress = progress;
invalidate();
}
}
```
使用自定义View
在你的布局文件中添加自定义的`ProgressBar`:
```xml
android:layout_/> ``` 在Activity或Fragment中设置进度: ```java ProgressBar progressBar = findViewById(R.id.progressBar); progressBar.setProgress(50); // 设置进度为50% ``` 建议 根据实际需求调整`MaxBgStrokeWidth`、`CricleBarStrokeWidth`、`MaxBgColor`、`barColor`、`smallMaxBgColor`、`progress`、`ChangeCircleAngle`和`startAngle`等属性,以达到最佳视觉效果。 可以考虑添加调整属性:
动画效果: