HenCoder Android UI 部分 2-2 全新定义 View 的尺寸

这期是 HenCoder 布局部分的最后一期:重写 onMeasure()onLayout() 来定制 Layout 的内部布局。

简介

这期虽然距离上期的时间比较久,但主要是我的个人原因,而不是因为这期的内容难。这期的内容还是比较简单的,主要是一些概念和原理上的东西,实操方面非常容易,所以和上期一样,主要把视频看看就差不多啦:


总结

这期的文章依然是只有总结。但这次主要是因为我最近实在太多事情了……

定制 Layout 内部布局的方式

  1. 重写 onMeasure() 来计算内部布局

  2. 重写 onLayout() 来摆放子 View

重写 onMeasure() 的三个步骤:

  1. 调用每个子 View 的 measure() 来计算子 View 的尺寸

  2. 计算子 View 的位置并保存子 View 的位置和尺寸

  3. 计算自己的尺寸并用 setMeasuredDimension() 保存

计算子 View 尺寸的关键

计算子 View 的尺寸,关键在于 measure() 方法的两个参数——也就是子 View 的两个 MeasureSpec 的计算。

子 View 的 MeasureSpec 的计算方式:
  • 结合开发者的要求(xml 中 layout_ 打头的属性)和自己的可用空间(自己的尺寸上限 - 已用尺寸)

  • 尺寸上限根据自己的 MeasureSpec 中的 mode 而定

    • EXACTLY / AT_MOST:尺寸上限为 MeasureSpec 中的 size

    • UNSPECIFIED:尺寸无上限

重写 onLayout() 的方式

onLayout() 里调用每个子 View 的 layout()  ,让它们保存自己的位置和尺寸。

练习项目

这期还是没有练习项目。

降速生产声明

最近把 HenCoder 做得越来越溜的同时,各种工作上的事情和一些个人私事也忽然蜂拥而至。由于个人能力优先,接下来 HenCoder 将会被迫进一步降低产出速度。

呼……在未来的某个时间,我们下期再见啦!

觉得赞?

那就关注一下?↓↓↓

0?wx_fmt=jpeg



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值