摘要:并且便于統(tǒng)一的修改與查看。一旦被顯示后,則將從視圖框架中移除,其也會(huì)失效,此時(shí)得到的也是空的。所以它可以有效的避免布局的嵌套,從而達(dá)到優(yōu)化布局的效果。其他嵌套的中,盡量不要使用,因?yàn)闀?huì)重新測(cè)量?jī)纱巍?/p>
作為android應(yīng)用來講,無論應(yīng)用本身多么美觀,功能多么強(qiáng)大,內(nèi)容多么豐富。但如果App本身打開界面緩慢超過手機(jī)16ms刷新一次頁面的時(shí)間,就會(huì)產(chǎn)生卡頓。用戶體驗(yàn)都會(huì)變得極差,導(dǎo)致用戶量減少。所以我們?cè)陂_發(fā)過程中同樣要注重布局優(yōu)化。
在Layout布局中如果有你想要引用的布局時(shí),若該布局在不同的布局是公共布局,我們會(huì)多次使用到。這時(shí)可以使用
<-- container為引用布局的布局id -->
非常簡(jiǎn)單只要在你所需要放置該布局的布局內(nèi)部使用
在
除了layout_width與layout_height之外,我們還可以覆寫container中的任何一個(gè)layout屬性,如layout_gravity、layout_margin等,而非layout屬性則無法在
?
大家可以見到
雖然ViewStub是不占用任何空間的,但是每個(gè)布局都必須要指定layout_width和layout_height屬性,否則運(yùn)行就會(huì)報(bào)錯(cuò)。且ViewStub所要替代的layout文件中不能含有
ViewStub使用起來非常簡(jiǎn)單,只要在需要的時(shí)候findViewById()招到它并調(diào)用setVisibility(View.VISIBLE)或者inflate()顯示它就可以了。
標(biāo)簽小結(jié)標(biāo)簽 | 使用原因 | 優(yōu)化結(jié)果 | 使用舉例 |
---|---|---|---|
提取公共部分,提高布局復(fù)用性 | 減少測(cè)量,繪制時(shí)間 | App中有多個(gè)UI界面需要使用同一布局或部分布局時(shí)。如頁面標(biāo)題toolBar復(fù)用時(shí)使用。 | |
布局層級(jí)減少 | 減少繪制工作量 | 當(dāng)所需要復(fù)用的部分布局與要合并到的布局的根標(biāo)簽一致時(shí)使用。(類似加強(qiáng)版include,減少布局層級(jí),但耦合性更強(qiáng))。 | |
無需第一時(shí)間展示于界面上,在需要時(shí)加載 | 減少測(cè)量,繪制時(shí)間 | 該界面不需要第一時(shí)間展示給用戶,如網(wǎng)絡(luò)報(bào)錯(cuò)界面,或用戶信息下拉界面,在該界面中,但第一時(shí)間不需要顯示給用戶時(shí)使用。 |
?AndroidStudio上有一個(gè)神奇的功能,就是在Xml布局中我們可以在design標(biāo)簽下進(jìn)行布局可視化操作。但是該功能并不完善,屬于系統(tǒng)自動(dòng)生成的一個(gè)布局,反而會(huì)讓布局內(nèi)部凌亂不堪,難以讀懂,同時(shí)會(huì)造成卡頓,所以以前我們都是用該界面進(jìn)行預(yù)覽查看;而ConstraintLayout約束布局這一新布局,它反而支持布局可視化操作,可以把它比喻成一個(gè)可視化視圖操作布局的RelativeLayout,ConstraintLayout是使用約束的方式來指定各個(gè)控件的位置和關(guān)系的。布局內(nèi)部不需要嵌套其他布局,就可以完成你想要的界面出現(xiàn)。所以它可以有效的避免布局的嵌套,從而達(dá)到優(yōu)化布局的效果。因?yàn)槭褂锰^復(fù)雜,想要深入了解使用方法請(qǐng)點(diǎn)擊ConstraintLayout。
減少視圖樹層級(jí)結(jié)構(gòu)系統(tǒng)在顯示沒一個(gè)視圖的時(shí)候,都要經(jīng)理測(cè)量,布局,繪制的過程。如果我們的布局嵌套層數(shù)太多,會(huì)導(dǎo)致額外的測(cè)量、布局等,十分消耗系統(tǒng)資源,使UI卡頓,影響用戶體驗(yàn)。所以要盡量減少是圖書層級(jí)結(jié)構(gòu),避免不必要的布局嵌套,使用更少嵌套的布局方式。
查看文件的視圖樹,我們可以使用DDMS來查看。首先運(yùn)行項(xiàng)目在真機(jī)或虛擬機(jī)上。而后再到tools中打開DDMS。這里就不展開介紹了。
其他嵌套的LinearLayout中,盡量不要使用weight,因?yàn)閣eight會(huì)重新測(cè)量?jī)纱巍?/p>
Layout的選擇,以盡量減少View樹的層級(jí)為主,去除不必要的嵌套和View節(jié)點(diǎn)。比如如果LinearLayout嵌套過多,建議使用RelativeLayout減少布局嵌套。
RelativeLayout本身盡量不要嵌套使用。
View視圖的隱藏與現(xiàn)實(shí),盡量使用invisible。因?yàn)間one,不占用空間,視圖會(huì)重新測(cè)量繪制;而invisible視圖不會(huì)重新繪制,但仍然占用空間位置。
布局調(diào)優(yōu)工具:hierarchy viewer,Lint tool
鏈接:https://www.jianshu.com/p/faf...
閱讀更多
react-native技術(shù)的優(yōu)劣*
開發(fā)了幾個(gè)小程序后,說說我對(duì)小程序的看法
NDK項(xiàng)目實(shí)戰(zhàn)—高仿360手機(jī)助手之卸載監(jiān)聽
(Android)面試題級(jí)答案(精選版)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/11885.html
摘要:需求最近遇到一個(gè)需求,平時(shí)被后臺(tái)慣著直接返回了樹形結(jié)構(gòu)給到前端,前端對(duì)這種嵌套類型的數(shù)據(jù)如地區(qū)的級(jí)聯(lián)或菜單的樹形結(jié)構(gòu)省掉了一層處理。當(dāng)然,沒用好就相當(dāng)于一堆廢鐵,甚至將導(dǎo)致一些不可預(yù)料的結(jié)果。相比起遞歸,我更喜歡這種方法。 需求 最近遇到一個(gè)需求,平時(shí)被后臺(tái)慣著直接返回了樹形結(jié)構(gòu)給到前端,前端對(duì)這種嵌套類型的數(shù)據(jù)(如地區(qū)的級(jí)聯(lián)或菜單的樹形結(jié)構(gòu))省掉了一層處理。換了個(gè)后臺(tái)小哥哥返回了扁平...
摘要:三次握手和四次揮手的問題在面試中是最為常見的考點(diǎn)之一。上面有一個(gè)非常特殊的狀態(tài),它是主動(dòng)關(guān)閉的一方在回復(fù)完對(duì)方的揮手后進(jìn)入的一個(gè)長(zhǎng)期狀態(tài),這個(gè)狀態(tài)標(biāo)準(zhǔn)的持續(xù)時(shí)間是分鐘,分鐘后才會(huì)進(jìn)入到狀態(tài),釋放套接字資源。 showImg(https://segmentfault.com/img/remote/1460000018918991); TCP三次握手和四次揮手的問題在面試中是最為常見的考點(diǎn)...
摘要:然而學(xué)習(xí)布局,你只要學(xué)習(xí)幾個(gè)手機(jī)端頁面自適應(yīng)解決方案布局進(jìn)階版附源碼示例前端掘金一年前筆者寫了一篇手機(jī)端頁面自適應(yīng)解決方案布局,意外受到很多朋友的關(guān)注和喜歡。 十分鐘學(xué)會(huì) Fiddler - 后端 - 掘金一.Fiddler介紹 Fiddler是一個(gè)http抓包改包工具,fiddle英文中有欺騙、偽造之意,與wireshark相比它更輕量級(jí),上手簡(jiǎn)單,因?yàn)橹荒茏ttp和https數(shù)據(jù)...
閱讀 3130·2021-11-10 11:36
閱讀 3324·2021-10-13 09:40
閱讀 6156·2021-09-26 09:46
閱讀 675·2019-08-30 15:55
閱讀 1420·2019-08-30 15:53
閱讀 1592·2019-08-29 13:55
閱讀 3007·2019-08-29 12:46
閱讀 3220·2019-08-29 12:34