您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。