createViewFromTag(parent, name, context, attrs)負(fù)責(zé)創(chuàng)建 View 對象。因為這里排除了merge標(biāo)簽,這里的根標(biāo)簽肯定是一個 View,所以調(diào)用了 createViewFromTag(root, name, inflaterContext, attrs)方法創(chuàng)建 View 。
創(chuàng)新互聯(lián)建站主營香格里拉網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,香格里拉h(huán)5小程序開發(fā)搭建,香格里拉網(wǎng)站營銷推廣歡迎香格里拉等地區(qū)企業(yè)咨詢
View 的工作流程主要是指 measure 、 layout 、 draw 三大流程,即測量、布局、繪制。其中 measure 確定 View 的測量寬/高, layout 確定 view 的最終寬/高和四個頂點(diǎn)的位置,而 draw 則將 View 繪制在屏幕上。
View的工作流程主要指的是measure、Layout、draw三個流程,即測量、布局、繪制。measure測量view的寬高,Layout確定view的寬高和四個頂點(diǎn),draw繪制到屏幕上。
也就是說,在Activity實例創(chuàng)建之初,Window就已經(jīng)創(chuàng)建好了。DecorView在第一次調(diào)用 Window.getDecorView 的時候被創(chuàng)建。
通過setContentView,創(chuàng)建了Activity的頂級View---DecorView,DecorView的內(nèi)容欄(mContentParent)用來顯示我們的布局。
·findViewById() 是找具體 xml 布局文件中的具體 widget 控件(如:Button、TextView 等)。
getLeft , getTop, getBottom, getRight, 這一組是獲取相對在它父親里的坐標(biāo) 如果在Activity的OnCreate()事件輸出那些參數(shù),是全為0,要等UI控件都加載完了才能獲取到這些。
給最上層View添加OnTouchListener 或者使用activity的Ontouch獲得點(diǎn)擊按鈕的x,y坐標(biāo)。按鈕的長寬獲得比較麻煩,可以固定大小。可以使用pupwindow直接新建窗口遮擋。可以使用Cavas繪制窗口,傳入具體位置。
可以在相對布局里面,再寫一個Linelayout布局,給兩個控件一樣的權(quán)重,也就是android:gravity=1,或者任意數(shù)值,只要是一樣的數(shù)值。
1、通過上述圖示,我們可以總結(jié)Activity的生命周期規(guī)律如下:啟動Activity:系統(tǒng)會先調(diào)用onCreate方法,然后調(diào)用onStart方法,最后調(diào)用onResume,Activity進(jìn)入運(yùn)行狀態(tài)。
2、Stoped(當(dāng)Activity被完全覆蓋不可見);Killed(當(dāng)Activity被系統(tǒng)從內(nèi)存中刪除).其生命周期如下圖:相關(guān)方法及作用:1 onCreate:當(dāng)Activity創(chuàng)建時僅且調(diào)用一次,該方法主要適用于初始化頁面。
3、因此,Activity有如下3種生命周期:整體生命周期:onCreate - ... ... - onDestroy??梢暽芷冢簅nStop - ... ... - onPause。焦點(diǎn)生命周期:onPause - onResume。
4、活動生命周期的每個階段都對應(yīng)于金字塔的一個步驟。當(dāng)系統(tǒng)創(chuàng)建一個新的Activity實例時,回調(diào)方法從塔的底部一級一級地移動到塔的頂部。當(dāng)它位于金字塔的頂部時,活動位于用戶的前臺,此時用戶可以與活動進(jìn)行交互。