千家信息网

android中MeasureSpec有什么用

发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,这篇文章给大家分享的是有关android中MeasureSpec有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在安卓View的measure过程中,measureS
千家信息网最后更新 2024年12月01日android中MeasureSpec有什么用

这篇文章给大家分享的是有关android中MeasureSpec有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  在安卓View的measure过程中,measureSpec扮演着重要的作用。MeasureSpec是一个32位的int,前2位代表模式,其中00代表UNSPECIFIED,01代表EXACTLY,10代表ATMOST,后30位代表具体大小,例如1073741824模式为EXACTLY,大小为1080。

  measurespec是什么意思

  在ViewGroup中有一个getChildMeasureSpec方法用于根据父ViewGroup的MeasureSpec模式和子view的wrap_content、match_parent或xxdp确定子view的MeasureSpec模式,具体规则如下图,第二行是父view调用子view的measure函数测量的时候传递的参数,childSize是子view的大小(没错,是父view包办的婚姻,子view只是执行),parentSize是父view的剩余大小(表示子view的大小自己测,但是不要超出这个大小),0表示父view对子view没有任何约束,想多大就多大。

  measurespec的方法

  初次接触看到这两张图一定是云里雾里不知所云,这几种模式到底和xml布局文件中的wrap_content、match_parent有啥关系?我尽量清楚地解释一下转换的过程。在xml布局文件中有三种写法wrap_content、match_parent,xxdp,程序并不直接处理这些而是会对他们做转换,程序加载的时候会把这些参数读取到LayoutParams对象中保存起来,然后开始从根view遍历整棵view树,这里的根view并不是我们在xml文件中写的view,而是系统内置的DecorView,从DecorView到xml的view中间还有好多层,不过和主题关系不大就不展开说了,只需要知道xml布局中的上一层view的模式是EXACTLY就够了(毕竟屏幕大小是确定的),按上面的表格,如果我们的布局是match_parent则模式为EXACTLY,如果我们的布局是wrap_content则模式为AT_MOST。知道这个前提再根据上面的表格我们便可以很"轻松"地推断出所有的view是什么模式的,大小应该是多少。

感谢各位的阅读!关于"android中MeasureSpec有什么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0