android带指针仪表盘自动移动,Android 绘制仪表盘指针刻度

本文介绍了如何在Android中创建一个带指针的仪表盘组件,包括绘制表盘刻度和指针旋转到指定角度的实现。通过循环绘制弧线来完成刻度的绘制,并使用旋转画布实现指针的旋转效果。提供了完整的代码示例,可用于自定义温度显示等应用。
摘要由CSDN通过智能技术生成

不废话,先看效果图:

9a3d8c065867

meter1.gif

表盘的绘制重点有两点:

1.表盘刻度的绘制

2.表盘指针旋转到指定刻度的实现

表盘刻度的绘制

刻度的绘制可以采用画线.然后循环旋转画布的方式实现,

我这里通过绘制弧线,第一个刻度占1度,与第二个刻度的间距是2度,那么第二个刻度的起始角度为第一个刻度的起始角度+1度+间距2度,以此类推,循环绘制,完成刻度的绘制.实现代码如下:

//绘制刻度线,通过两次不同大小圆的遮罩,达到刻度的长短粗细效果

RectF oval3 = new RectF(20, 20, sideLength-20, sideLength-20);//sideLength表盘控件的边长

float i1 = (270.0f-110) / 99;//第一次绘制细刻度线没有绘制粗刻度线,一共空缺10度所以-110

float startAngle = 135;

ArrayList floats = new ArrayList<>();

for (int i = 0; i < 100; i++) {

if (String.valueOf(i+1).contains("0")||i==0){

floats.add(startAngle);

startAngle = startAngle+i1+2;

}else{

canvas.drawArc(oval3, startAngle, 1, true, paint2);

startAngle = startAngle+i1+1;

}

}

canvas.drawCircle(sideLength/2, sideLength/2, sideLength/2-40, paint1);

for (int i = 0; i < floats.size(); i++) {//循环绘制粗刻度线

canvas.drawArc(oval3, floats.get(i), 2, true, quenLinePaint);

}

canvas.drawCircle(sideLength/2, sideLength/2, sideLength/2-50, paint1);

表盘指针旋转到指定刻度的实现

方式一:绘制一条直线,通过旋转画布的方式实现指针的旋转效果

canvas.save();//先保存之前的

canvas.rotate(row,200, 200);//延中心点旋转角度

canvas.drawLine(200,200,200,390,paint);//画线

canvas.restore();//恢复

2.方式二:通过圆函数,计算旋转任意角度后的圆上一点的坐标,然后绘制圆心到圆上一点的半径,就是指针的位置

x1 = x0 + r * cos(ao * 3.14 /180 )

y1 = y0 + r * sin(ao * 3.14 /180 )

float lineX = (float)(200+170*Math.cos(row*3.14f/180));

float lineY = (float)(200+170*Math.sin(row*3.14f/180));

canvas.drawLine(200,200,lineX,lineY,paint);

这里我采用的原理与方式一类似,只不过绘制的不是简单的直线而是多边形位图

canvas

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值