View 自定义 - 绘制 Draw

该文详细介绍了在Android中如何自定义View,包括在onDraw方法中绘制矩形和圆形,并考虑了内边距的影响。同时提到ViewGroup如何遍历并绘制所有子元素,以及drawBackground和dispatchDraw的作用。

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()绘制装饰(滑动条、前景色等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值