Android简易仪表盘
效果截图:
代码:
Paint paint = new Paint();
float sensor = 0;
int max = 0;
public YB_View(Context context) {
super(context);
}
public YB_View(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setTextSize(20);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float mx = getWidth() / 2 - 1;
float my = getHeight() / 2 - 1;
max = 100;
//绘制中心圆
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(mx, my, 10, paint);
paint.setStyle(Paint.Style.STROKE);
//绘制指针
paint.setStrokeWidth(5);
canvas.save();
canvas.rotate(-135 + sensor / max * 270, mx, my);
canvas.drawLine(mx, my, mx, 20, paint);
canvas.restore();
//绘制刻度
paint.setStrokeWidth(1);
paint.setColor(Color.BLACK);
for (int i = 0; i < 101; i++) {
canvas.save();
canvas.rotate((float) (-135 + i * 2.7), mx, my);
if (i % 10 == 0) {
canvas.drawText(i * (max / 100) + "", mx - 10, 40, paint);
canvas.drawLine(mx, 1, mx, 25, paint);
}
canvas.drawLine(mx, 1, mx, 15, paint);
canvas.restore();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?