Android 在另一弧内画一条弧
Android draw one arc within another arc
我正在尝试在 Wear OS
.
中以 10px 的距离在另一个 arc
中绘制一个 arc
我们知道 arc
可以使用以下方法绘制:
canvas.drawArc(arcBounds, 0, 90, false, paint);
上面的语句会在下午3点到6点画一条弧线。
我想在上面 arc
.
中的 startAngle
和 sweepAngle
处再画一个 arc
假设需要绘制的总数arc
是根据一个列表的大小,如何实现预期的输出?
这是我原来的 arcBounds init 方法的样子:
private void initArcBounds(int width, int height, int additionalMargin) {
float margin = res.getDimension(R.dimen.timearc_margin) + additionalMargin;
arcBounds.left = margin;
arcBounds.top = margin;
arcBounds.right = width - margin;
arcBounds.bottom = height - margin;
}
for (Event el : eventList) {
canvas.drawArc(arcBounds, start, sweepAngle, false, timeArcPaints);
arcBounds.inset(10,10);
}
要向内创建同心圆弧,我们只需要 "shrink" 在每一侧按所需的度量设置边界。 RectF
class 有方便的 inset(dx, dy)
方法可以做到这一点。它需要以像素为单位的这些度量,因此我们可以简单地为每个传递 10
,无需调整。
这将修改 RectF
的边界,因此为了将它们保留在原始值中,我们可以在绘制循环之前使用 RectF
的复制构造函数创建一个临时副本.
例如一共:
RectF temp = new RectF(arcBounds);
for (...) {
canvas.drawArc(temp, 0, 90, false, paint);
temp.inset(10f, 10f);
}
我正在尝试在 Wear OS
.
arc
中绘制一个 arc
我们知道 arc
可以使用以下方法绘制:
canvas.drawArc(arcBounds, 0, 90, false, paint);
上面的语句会在下午3点到6点画一条弧线。
我想在上面 arc
.
startAngle
和 sweepAngle
处再画一个 arc
假设需要绘制的总数arc
是根据一个列表的大小,如何实现预期的输出?
这是我原来的 arcBounds init 方法的样子:
private void initArcBounds(int width, int height, int additionalMargin) {
float margin = res.getDimension(R.dimen.timearc_margin) + additionalMargin;
arcBounds.left = margin;
arcBounds.top = margin;
arcBounds.right = width - margin;
arcBounds.bottom = height - margin;
}
for (Event el : eventList) {
canvas.drawArc(arcBounds, start, sweepAngle, false, timeArcPaints);
arcBounds.inset(10,10);
}
要向内创建同心圆弧,我们只需要 "shrink" 在每一侧按所需的度量设置边界。 RectF
class 有方便的 inset(dx, dy)
方法可以做到这一点。它需要以像素为单位的这些度量,因此我们可以简单地为每个传递 10
,无需调整。
这将修改 RectF
的边界,因此为了将它们保留在原始值中,我们可以在绘制循环之前使用 RectF
的复制构造函数创建一个临时副本.
例如一共:
RectF temp = new RectF(arcBounds);
for (...) {
canvas.drawArc(temp, 0, 90, false, paint);
temp.inset(10f, 10f);
}