国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

姿勢(shì)擺好,一招學(xué)會(huì)android的布局優(yōu)化!

lijy91 / 1422人閱讀

摘要:并且便于統(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)化。

標(biāo)簽

在Layout布局中如果有你想要引用的布局時(shí),若該布局在不同的布局是公共布局,我們會(huì)多次使用到。這時(shí)可以使用標(biāo)簽。并且便于統(tǒng)一的修改與查看。

    <-- container為引用布局的布局id -->
    

非常簡(jiǎn)單只要在你所需要放置該布局的布局內(nèi)部使用標(biāo)簽引入該布局就可以了。
標(biāo)簽當(dāng)中,我們是可以覆寫所有l(wèi)ayout屬性的,即include中指定的layout屬性將會(huì)覆蓋掉。如我們想修改它的寬高為wrap_content。

      

除了layout_width與layout_height之外,我們還可以覆寫container中的任何一個(gè)layout屬性,如layout_gravity、layout_margin等,而非layout屬性則無法在標(biāo)簽當(dāng)中進(jìn)行覆寫。另外需要注意的是,如果我們想要在標(biāo)簽當(dāng)中覆寫layout屬性,必須要將layout_width和layout_height這兩個(gè)屬性也進(jìn)行覆寫,否則覆寫效果將不會(huì)生效。

標(biāo)簽

?標(biāo)簽是作為標(biāo)簽的一種輔助擴(kuò)展來使用的,它的主要作用是為了防止在引用布局文件時(shí)產(chǎn)生多余的布局嵌套。Android解析和展示一個(gè)布局需要消耗時(shí)間,布局嵌套的越多,那么解析起來也就越耗時(shí),性能也就越差,因此我們?cè)诰帉懖季治募r(shí)應(yīng)該讓嵌套的層數(shù)越少越好。

    
        
        
    

大家可以見到標(biāo)簽的使用方法是直接當(dāng)做該布局的根布局節(jié)點(diǎn)使用,而當(dāng)在其他位置需要引用該布局時(shí),則使用標(biāo)簽進(jìn)行引用,同時(shí)該節(jié)點(diǎn)會(huì)同步變成父容器的根節(jié)點(diǎn)。比如你使用在LinearLayout中則兩個(gè)view線性排列,而在RelativeLayout中則標(biāo)簽就相當(dāng)于相對(duì)布局標(biāo)簽。這樣就可以省略一些不必要的布局嵌套了。

標(biāo)簽

標(biāo)簽實(shí)際上是一個(gè)輕量級(jí)的View,它既沒有尺寸,也不會(huì)繪制任何東西,所以將它放置在布局當(dāng)中基本可以認(rèn)為是完全不會(huì)影響性能的。只要在需要的時(shí)候顯示它,才會(huì)進(jìn)行加載。

雖然ViewStub是不占用任何空間的,但是每個(gè)布局都必須要指定layout_width和layout_height屬性,否則運(yùn)行就會(huì)報(bào)錯(cuò)。且ViewStub所要替代的layout文件中不能含有標(biāo)簽,所以使用前需要構(gòu)思好界面布局,以免不必要的嵌套。一旦ViewStub被顯示后,則ViewStub將從視圖框架中移除,其id也會(huì)失效,此時(shí)findViewById()得到的也是空的。

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í)使用。
ConstraintLayout約束布局

?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

相關(guān)文章

  • JavaScript實(shí)現(xiàn)無限級(jí)遞歸樹

    摘要:需求最近遇到一個(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)小哥哥返回了扁平...

    atinosun 評(píng)論0 收藏0
  • 漫畫:一招學(xué)會(huì)TCP三次握手和四次揮手

    摘要:三次握手和四次揮手的問題在面試中是最為常見的考點(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)...

    LuDongWei 評(píng)論0 收藏0
  • 小技巧 - 收藏集 - 掘金

    摘要:然而學(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ù)...

    A Loity 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<