这是一个概念性问题,从这里开始:我应该创建,编辑,保存和重新使用CustomView,该View应该由一个父矩形和12个内部矩形/多边形组成。我应该能够从代码中引用它们中的每一个。
最简单的解决方案是绘制12个矩形,彼此相邻,但是它可能太重了。我当时想的是绘制一个巨大的Rectangle并将其分成多个部分(例如GIS中的多边形),但是我没有发现任何类似的痕迹。如果有人可以提出一些轻量级的概念,我会很高兴的。
关于一般的解决方案,在这种情况下,您可以像这样对矩形建模:
data class Coord(val x: Float, val y: Float)
data class Rectangle(val topLeft: Coord, val bottomRight: Coord, val childRectangles: Collection<Rectangle>)
然后,您具有如下绘制功能:
fun draw(rectangle: Rectangle, canvas: Canvas, paint: Paint) {
canvas.drawRect(
rectangle.topLeft.x,
rectangle.topLeft.y,
rectangle.bottomRight.x,
rectangle.bottomRight.y,
paint
)
rectangle.childRectangles.forEach { childRectangle ->
draw(childRectangle, canvas, paint)
}
}