public class Xing2View extends CustomView {
public Xing2View(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mDeafultPaint.setAntiAlias(true);//抗锯齿
canvas.translate(mViewWidth / 2, mViewHeight / 2);//移动画布到页面中心
canvas.rotate(-90);
// 6角星外接圆大小
int t = mViewWidth / 3;
// 6角星6个角的角度360/6
canvas.drawColor(Color.BLACK);
canvaXing(t,canvas);
canvaXing((int) (t*0.8),canvas);
}
private void canvaXing(int t,Canvas canvas){
float r = 60;
// 弧度的计算公式为: 2*PI/360*角度;
double aa = 2 * PI / 360;
// 计算6个顶点坐标
float a[] = {(float) (Math.cos(0 * aa) * t), (float) (sin(0 * aa) * t)};
float b[] = {(float) (Math.cos(r * aa) * t), (float) (sin(r * aa) * t)};
float c[] = {(float) (Math.cos(r * 2 * aa) * t), (float) (sin(r * 2 * aa) * t)};
float d[] = {(float) (Math.cos(r * 3 * aa) * t), (float) (-sin(r * 3 * aa) * t)};
float e[] = {(float) (Math.cos(r * 4 * aa) * t), (float) (sin(r * 4 * aa) * t)};
float f[] = {(float) (Math.cos(r * 5 * aa) * t), (float) (sin(r * 5 * aa) * t)};
// 画6角星
mDeafultPaint.setStrokeWidth(2);
mDeafultPaint.setColor(Color.YELLOW);
mDeafultPaint.setStyle(Paint.Style.STROKE);
Path path = new Path();
path.moveTo(a[0], a[1]);
path.lineTo(c[0], c[1]);
path.lineTo(e[0], e[1]);
path.close();
path.moveTo(b[0], b[1]);
path.lineTo(d[0], d[1]);
path.lineTo(f[0], f[1]);
path.close();
canvas.drawPath(path, mDeafultPaint);
canvas.drawCircle(0,0,t,mDeafultPaint);
}
}
android 自定义View六芒星(六角星)
最新推荐文章于 2025-03-29 15:23:34 发布