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);
这就是我最终的结果:
没关系画出的时间,我希望浅蓝色的绘画是圆弧,而不是扇形。
您可以在Github上找到整个项目。
答案 0 :(得分:1)
您的代码是正确的,问题出在aPaintObject
的选项中:您必须查看Paint.Style
。
因此,在绘制之前,将绘画样式设置为仅描边而不填充,代码将变为:
aPaintObject.setStyle(Paint.Style.STROKE);
canvas.drawArc(new RectF(bounds) , 0 , degsForBigCircle , false , aPaintObject);