android 自定义画线画出圆角矩形进度条
时间: 2024-09-24 15:23:44 浏览: 71
Android自定义竖直方向SeekBar多色进度条
Android自定义画线圆角矩形进度条通常通过`ShapeDrawable`结合`Path`来实现。首先,你需要创建一个`Path`对象,然后定义路径数据以形成一个圆角矩形,最后将这个路径添加到`ShapeDrawable`中,并设置它的填充颜色以及渐变色来表示进度。
以下是基本步骤:
1. **创建`Path`对象**:
```java
private Path createRoundedRectPath(int width, int height, float cornerRadius) {
Path path = new Path();
path.moveTo(0, cornerRadius);
path.lineTo(width, cornerRadius);
path.quadTo(width, 0, width - cornerRadius, 0);
path.lineTo(width - cornerRadius, height);
path.quadTo(0, height, 0, height - cornerRadius);
path.lineTo(cornerRadius, height);
path.quadTo(0, height - cornerRadius, 0, height);
path.close();
return path;
}
```
2. **创建`ShapeDrawable`并绘制路径**:
```java
ShapeDrawable drawable = new ShapeDrawable(new RoundRectShape(
new float[]{cornerRadius, cornerRadius}, // 圆角数组
new float[]{0, 0, width, height}, // 边框大小
0 // 内边距
));
// 设置进度的颜色(例如绿色代表填充部分)
Paint paint = new Paint();
paint.setColor(Color.GREEN);
drawable.getPaint().setColor(paint.getColor());
// 设置渐变颜色(可以用于表示进度)
LinearGradient gradient = new LinearGradient(0, 0, width, height,
new int[]{Color.TRANSPARENT, Color.GREEN}, null, Shader.TileMode.CLAMP);
drawable.getPaint().setShader(gradient);
// 绑定进度值,例如50%时绘制到一半的高度
drawable.setBounds(0, (height * progress) / 100, width, height);
```
3. **应用到视图上**:
将上面创建的`drawable`设置为视图的背景,比如`ViewGroup`的背景或者`ProgressBar`的进度条样式。
阅读全文