根据时间正确绘制圆弧

时间:2014-12-26 09:55:16

标签: android math canvas wear-os

HoursPassed:0 - 23 MinsPassed:0 - 59

我想计算基于传递时间的弧度(x)

p = timePassed (hoursPassed * 60 + minutesPassed)

p / 24 * 60 = x / 360
360p / 24 * 60 = x
36p / 24 * 6 = x
6p / 24 = x
p / 4 = x

因此:

int minsPassed = mTime.minute;
int hoursPassed = mTime.hour;


float timePassed = minsPassed + hoursPassed * 60;

float degs = timePassed / 4;

让我们尝试绘制弧:我使用新的可穿戴API,所以我可以使用方法

public void onDraw(Canvas canvas, Rect bounds)

它为我提供了一个cancas对象和一个bounds对象:

让我们尝试绘制弧线:

canvas.drawArc(new RectF(bounds) , 0 , degsForBigCircle , false , aPaintObject);

这就是我最终的结果:

Picture

没关系画出的时间,我希望浅蓝色的绘画是圆弧,而不是扇形。

您可以在Github上找到整个项目。

1 个答案:

答案 0 :(得分:1)

您的代码是正确的,问题出在aPaintObject的选项中:您必须查看Paint.Style

因此,在绘制之前,将绘画样式设置为仅描边而不填充,代码将变为:

aPaintObject.setStyle(Paint.Style.STROKE);
canvas.drawArc(new RectF(bounds) , 0 , degsForBigCircle , false , aPaintObject);
相关问题