Android視圖的渲染過程:首先測(cè)量出view的大小厕氨、然后在布局流程中確定view到底要在哪個(gè)位置箭券,最后的繪制流程就是把前面所得到的繪制到屏幕上侧但。
View的位置:getLeft(),getTop(),這兩個(gè)坐標(biāo)是以它的父View的左上角為坐標(biāo)原點(diǎn)嗦明,單位為px椭更,那么父類的則是以屏幕的衡量
getMeasuredWidth()獲取的是view原始的大小,也就是這個(gè)view在XML文件中配置或者是代碼中設(shè)置的大小饶深。getWidth()獲取的是這個(gè)view最終顯示的大小餐曹,這個(gè)大小有可能等于原始的大小也有可能不等于原始大小
View的大小:View的大小有兩對(duì)值來表示敌厘。getMeasureWidth()和getMesureHeight()(這個(gè)值是一個(gè)8位的十六進(jìn)制的數(shù)字)這組值表示該View在它的父View里期望的大小值台猴,在measure()方法完成后獲得。?getWidth()/getHeight()這組值表示了該View在屏幕上的實(shí)際大小俱两,在draw()方法完成后可獲得饱狂。
View的大小最終由子View的LayoutParams與父View的測(cè)量要求公共決定,測(cè)量要求指的 就是這個(gè)MeasureSpec宪彩,它是一個(gè)32位int值休讳。
高2位:SpecMode?通過?MeasureSpec.getMode(measureSpec)方法獲取測(cè)量模式
低30位:SpecSize?通過?MeasureSpec.getSize(measureSpec)?方法獲取特定測(cè)量模式下的大小