ViewStub的原始碼

2021-09-14 06:05:48 字數 1143 閱讀 8512

使用viewstub能夠實現view懶載入,就是viewstub本身的onmessure寬高為0和draw方法是空實現。只有在呼叫setvisible()或是呼叫inflate()方法的時候,才進行載入模組。在載入的過程中就是將viewstub的view刪除掉,然後將裡層的view新增到parent中,然後進行顯示。

使用:在布局中使用viewstub,然後通過layout標籤,引入其他的布局檔案。

原始碼:1.在viewstub載入的時候,先執行onmeasure方法,設定width和height的值為0.

並且在draw()方法中是空實現

2.當呼叫inflate()方法的時候,開始載入子布局,並且新增到父布局中。

在這裡首先就是獲取到viewstub的父布局。

在這裡進行載入子布局,這裡的mlayoutresource就是子布局的id

讓看後呼叫replaceselfwithview()方法,這裡首先是呼叫parent.indexofchild(this),並刪除這個索引的view,其實就是將viewstub從整個布局中刪除。因此viewstub呼叫inflate()方法後,就不存在了。

然後將子布局新增父布局中

3.也可以用setvisible()方法進行顯示內容

本質也是呼叫了inflate()方法

vertx原始碼 vert x web的原始碼解析

本來應該要寫的是eventbus的原始碼分析的,但是vert.x中國使用者組 群號 515203212 的小夥伴們好像對vert.x web深入了解的需求更大一些。所以就先分析vert.x web的實現原理吧。分析完之後發現篇幅較長,請耐心看完。vert.x web主要的功能是路由,還有常用的htt...

原始碼學習 ArrayList的擴容原始碼分析

原始碼如下 下面是arraylist的擴容機制 arraylist的擴容機制提高了效能,如果每次只擴充乙個,那麼頻繁的插入會導致頻繁的拷貝,降低效能,而arraylist的擴容機制避免了這種情況。如有必要,增加此arraylist例項的容量,以確保它至少能容納元素的數量 param mincapac...

原始碼 連線mysql mysql的原始碼安裝

如果這步失敗,可以刪除掉原始碼目錄,重新解壓,然後再cmake一次試試 失敗如下圖 成功如下圖 命令 time make 注 這個過程會挺久的,取決於你機器的效能。命令 time make install 安裝成功後會生成乙個mysql56目錄,這就是我們的編譯安裝後的mysql軟體了。注意 這個軟...