ViewStub的使用(性能優(yōu)化)

A ViewStub is an invisible, zero-sized View that can be used to lazily inflate layout resources at runtime. When a ViewStub is made visible, or when inflate() is invoked, the layout resource is inflated. The ViewStub then replaces itself in its parent with the inflated View or Views. Therefore, the ViewStub exists in the view hierarchy until setVisibility(int) or inflate() is invoked. The inflated View is added to the ViewStub's parent with the ViewStub's layout parameters. Similarly, you can define/override the inflate View's id by using the ViewStub's inflatedId property. For instance:


The ViewStub thus defined can be found using the id "stub." After inflation of the layout resource "mySubTree," the ViewStub is removed from its parent. The View created by inflating the layout resource "mySubTree" can be found using the id "subTree," specified by the inflatedId property. The inflated View is finally assigned a width of 120dip and a height of 40dip. The preferred way to perform the inflation of the layout resource is the following: ViewStub stub = (ViewStub) findViewById(R.id.stub); View inflated = stub.inflate(); When inflate() is invoked, the ViewStub is replaced by the inflated View and the inflated View is returned. This lets applications get a reference to the inflated View without executing an extra findViewById().

我們用ViewStub來實現(xiàn)視圖的懶加載瑟慈。比如呼渣,當(dāng)我們的應(yīng)用在打開的時候贮聂,有一些視圖是不需要可見的苍息,我們把它們的Visibility屬性設(shè)置為不可見后,在加載視圖時系統(tǒng)還是會把不可見的視圖一同加載蹋砚,一次性加載復(fù)雜的視圖可能會導(dǎo)致應(yīng)用出現(xiàn)卡頓票摇。ViewStub可以解決這個問題奈梳,它是一個“空”控件,視圖加載時并不會真正加載它指定的視圖圣勒,而是到了需要加載的時候由工程師手動加載费变。

如下。

像上面這樣寫圣贸,我們設(shè)定了它的視圖layout屬性挚歧,但這只是制造了一個空殼,這一個空殼允許我們手動的控制它的加載(在這個視圖加載前吁峻,它是不可見的)滑负。

需要注意的是,viewStub控件只需要被加載一次用含,可以通過isInflated()方法判斷是否已經(jīng)加載過矮慕,隨后通過inflate()方法對視圖進(jìn)行加載,用這一個方法后啄骇,viewStub指定的layout就會實現(xiàn)加載變可見痴鳄。加載代碼如下。


viewStub也支持加載時的監(jiān)聽缸夹,以下是對某個viewStub的加載監(jiān)聽操作痪寻。

通過判斷viewStub的parent是否為空,來判斷ViewStub是否已經(jīng)加載虽惭。原因是viewStub一旦加載橡类,viewStub將脫離當(dāng)前的布局,動態(tài)加載出來視圖將會替換它的位置趟妥,所以加載后的viewStub的parent view將為空猫态。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亲雪,更是在濱河造成了極大的恐慌勇凭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,423評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件义辕,死亡現(xiàn)場離奇詭異虾标,居然都是意外死亡,警方通過查閱死者的電腦和手機灌砖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評論 2 385
  • 文/潘曉璐 我一進(jìn)店門璧函,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人基显,你說我怎么就攤上這事蘸吓。” “怎么了撩幽?”我有些...
    開封第一講書人閱讀 157,019評論 0 348
  • 文/不壞的土叔 我叫張陵库继,是天一觀的道長。 經(jīng)常有香客問我窜醉,道長宪萄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,443評論 1 283
  • 正文 為了忘掉前任榨惰,我火速辦了婚禮拜英,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琅催。我一直安慰自己居凶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,535評論 6 385
  • 文/花漫 我一把揭開白布恢暖。 她就那樣靜靜地躺著排监,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杰捂。 梳的紋絲不亂的頭發(fā)上舆床,一...
    開封第一講書人閱讀 49,798評論 1 290
  • 那天,我揣著相機與錄音嫁佳,去河邊找鬼挨队。 笑死,一個胖子當(dāng)著我的面吹牛蒿往,可吹牛的內(nèi)容都是我干的盛垦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,941評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼瓤漏,長吁一口氣:“原來是場噩夢啊……” “哼腾夯!你這毒婦竟也來了颊埃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,704評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蝶俱,失蹤者是張志新(化名)和其女友劉穎班利,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體榨呆,經(jīng)...
    沈念sama閱讀 44,152評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡罗标,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,494評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了积蜻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闯割。...
    茶點故事閱讀 38,629評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竿拆,靈堂內(nèi)的尸體忽然破棺而出宙拉,到底是詐尸還是另有隱情,我是刑警寧澤如输,帶...
    沈念sama閱讀 34,295評論 4 329
  • 正文 年R本政府宣布鼓黔,位于F島的核電站央勒,受9級特大地震影響不见,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜崔步,卻給世界環(huán)境...
    茶點故事閱讀 39,901評論 3 313
  • 文/蒙蒙 一稳吮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧井濒,春花似錦灶似、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至者甲,卻和暖如春春感,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背虏缸。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評論 1 266
  • 我被黑心中介騙來泰國打工鲫懒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刽辙。 一個月前我還...
    沈念sama閱讀 46,333評論 2 360
  • 正文 我出身青樓窥岩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宰缤。 傳聞我的和親對象是個殘疾皇子颂翼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,499評論 2 348

推薦閱讀更多精彩內(nèi)容

  • (1)什么時候使用ViewStub晃洒?為什么使用ViewStub? 當(dāng)我們需要根據(jù)某個條件控制某個View的顯示或者...
    CnPeng閱讀 52,606評論 21 84
  • 引言:一個可用于性能優(yōu)化的控件。時間:2017年09月21日作者:JustDo23Github:https://g...
    JustDo23閱讀 6,244評論 4 5
  • 引言 相信在開發(fā)Android App的過程中朦乏,我們會常常遇到這樣的業(yè)務(wù)需求锥累,需要在運行時根據(jù)數(shù)據(jù)動態(tài)決定顯示或隱...
    CrazyMO_閱讀 901評論 0 2
  • Lambda表達(dá)式可以理解為一種匿名函數(shù);沒有名稱集歇,有參數(shù)列表桶略、函數(shù)主題、返回類型诲宇,可能還有一個可以拋出的異常列表...
    熱愛生活的舒舒閱讀 277評論 0 0
  • “山上海棠花開了际歼,這時節(jié)定是美得緊的」美叮” 你倚在床頭鹅心,看著窗外,嘴角邊含笑纺荧。 “我去摘幾朵旭愧,放在這兒≈嫦荆” 你的眼睛...
    秋解書閱讀 434評論 3 3