画圆环

package com.example.annulusdemo;


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 AnnulusView extends View {
private int radius;// 半径
private int widths;// 圆环宽度
private String colors = "#ff0000";
private Paint mPaint;// 画笔


public int getRadius() {
return radius;
}


public void setRadius(int radius) {
this.radius = radius;
}


public int getWidths() {
return widths;
}


public void setWidths(int widths) {
this.widths = widths;
}


public String getColors() {
return colors;
}


public void setColors(String colors) {
this.colors = colors;
}


public AnnulusView(Context context) {
this(context, null);
}


public AnnulusView(Context context, AttributeSet attrs) {
super(context, attrs);
// 抗锯齿
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
//设置圆环
mPaint.setStyle(Paint.Style.STROKE);
}

@Override
protected void onDraw(Canvas canvas) {

//设置空心线宽
mPaint.setStrokeWidth(1);
//设置内圆
canvas.drawCircle(300, 300, radius, mPaint);
//设置圆环
mPaint.setStrokeWidth(widths);
mPaint.setColor(Color.parseColor(colors));
canvas.drawCircle(300, 300, radius + 1 + widths / 2, mPaint);
//设置外圆
mPaint.setStrokeWidth(2);
canvas.drawCircle(300, 300, radius + widths, mPaint);
super.onDraw(canvas);
}


}
自定义View在Android中圆环通常涉及到Canvas和Path对象。首先,你需要创建一个继承自View的自定义视图,然后重写onDraw()方法来绘制你的圆环。下面是一个简单的步骤: 1. **设置布局参数**: 设置View的高度和宽度为圆形的直径,可以使用match_parent作为大小,以便填充父容器。 ```java @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(getWidth(), getHeight()); } ``` 2. **初始化资源**: 定义颜色、路径、刷子等绘图工具,例如背景色、边框颜色以及描边宽度。 ```java private Paint paintBackground; private Paint paintStroke; private Path path; ``` 3. **onDraw()方法**: 在这个方法里,先清除布,创建并填充圆环路径,最后应用到布上。 ```java @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 清除布 canvas.drawColor(Color.TRANSPARENT); // 创建圆环路径 path = new Path(); path.addCircle((getWidth() - getPaddingLeft()) / 2f, (getHeight() - getPaddingTop()) / 2f, getWidth() / 2f - getPaddingLeft(), // 圆环半径 Path.Direction.CW); // 绘制背景 paintBackground.setColor(Color.WHITE); // 或者你喜欢的背景色 canvas.drawPath(path, paintBackground); // 绘制边框 paintStroke.setColor(Color.BLACK); canvas.drawPath(path, paintStroke); // 可选:渐变填充或阴影效果 // 使用GradientDrawable或LayerList添加更多细节 // 更新显示 invalidate(); } ``` 4. **额外设置**: 如果需要动态调整圆环的颜色、大小或者其他属性,可以在外部通过`setXXX()`方法改变对应的属性值,然后调用invalidate()通知视图更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值