View
没有子元素,只需要绘制自身。将 padding 算入绘制图形的大小中。

private val paint = Paint() //画笔
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
//画矩形
val rect = Rect()
rect.left = 0 + paddingLeft
rect.top = 0 + paddingTop
rect.right = width - paddingLeft
rect.bottom = height - paddingTop
canvas.drawRect(rect, paint)
//画圆形
val w = width - paddingLeft - paddingRight
val h = height - paddingTop - paddingBottom
val r = min(width, height) / 2 //半径 = 宽高中小的那个 / 2
canvas.drawCircle(paddingLeft + width/2, paddingTop = height/2, r , paint)
}
ViewGroup

除了绘制自身(背景、内容),遍历并绘制所有子元素。
| drawBackground() | 绘制背景 |
| onDraw() | 绘制自身内容 |
| dispatchDraw() | 系统已复写好对其子视图进行绘制,不需复写。 |
| onDrawScrollBars() | 绘制装饰(滑动条、前景色等)。 |
该文详细介绍了在Android中如何自定义View,包括在onDraw方法中绘制矩形和圆形,并考虑了内边距的影响。同时提到ViewGroup如何遍历并绘制所有子元素,以及drawBackground和dispatchDraw的作用。
1292

被折叠的 条评论
为什么被折叠?



