自定义View和ViewGroup学习总结

1.自定位View

在onMeasure(int widthMeasureSpec,int heightMeasureSpec)方法中的这两个参数,包括测量模式和测量的信息。int类型占用32个bit,这里将前2个bit用于区分不同的布局模式,后面30个bit存放的是尺寸的数据。

可以通过MeasureSpec.getMode(widthMeasureSpec) MeasureSpec.getSize(widthMeasureSpec)获取到测量方式和尺寸数据。这里的尺寸是父view提供的参考大小。

UNSPECIFIED:父容器没有对当前View有任何限制,当前View可以任意去尺寸。

EXACTLY:当前尺寸就是当前View应该取的尺寸。

AT_MOST:当前尺寸是当前View能取的最大尺寸。

match_parent-->EXACTLY。match_parent就是要利用父View提供的所有的剩余空间,父View的剩余空间是确定的。

wrap_content-->AT_MOST:当前View大小设置为包裹我们的View内容,尺寸大小就是父View提供的作为参考的尺寸,不超过这个尺寸就可以。

固定尺寸-->EXACTLY:

2.自定位ViewGroup

自定义ViewGroup还需要兼顾子View:首先要知道子View的大小,才知道当前的ViewGroup设置多大去容纳他们。根据子View的大小,以及我们的ViewGroup要实现的功能,决定ViewGroup的大小。大小测量后就考虑如何摆放了,垂直摆放或者是一个挨着一个摆放,或者按照先后顺序一个叠着一个放。最后把自己已有的空间分割成大大小小的一份,然后把子View对号入座放进去。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值