自定义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对号入座放进去。


猜你喜欢

转载自blog.csdn.net/qq_38256015/article/details/80683949