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

資訊專欄INFORMATION COLUMN

姿勢擺好,一招學會android的布局優化!

lijy91 / 1414人閱讀

摘要:并且便于統一的修改與查看。一旦被顯示后,則將從視圖框架中移除,其也會失效,此時得到的也是空的。所以它可以有效的避免布局的嵌套,從而達到優化布局的效果。其他嵌套的中,盡量不要使用,因為會重新測量兩次。

作為android應用來講,無論應用本身多么美觀,功能多么強大,內容多么豐富。但如果App本身打開界面緩慢超過手機16ms刷新一次頁面的時間,就會產生卡頓。用戶體驗都會變得極差,導致用戶量減少。所以我們在開發過程中同樣要注重布局優化。

標簽

在Layout布局中如果有你想要引用的布局時,若該布局在不同的布局是公共布局,我們會多次使用到。這時可以使用標簽。并且便于統一的修改與查看。

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

非常簡單只要在你所需要放置該布局的布局內部使用標簽引入該布局就可以了。
標簽當中,我們是可以覆寫所有layout屬性的,即include中指定的layout屬性將會覆蓋掉。如我們想修改它的寬高為wrap_content。

      

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

標簽

?標簽是作為標簽的一種輔助擴展來使用的,它的主要作用是為了防止在引用布局文件時產生多余的布局嵌套。Android解析和展示一個布局需要消耗時間,布局嵌套的越多,那么解析起來也就越耗時,性能也就越差,因此我們在編寫布局文件時應該讓嵌套的層數越少越好。

    
        
        
    

大家可以見到標簽的使用方法是直接當做該布局的根布局節點使用,而當在其他位置需要引用該布局時,則使用標簽進行引用,同時該節點會同步變成父容器的根節點。比如你使用在LinearLayout中則兩個view線性排列,而在RelativeLayout中則標簽就相當于相對布局標簽。這樣就可以省略一些不必要的布局嵌套了。

標簽

標簽實際上是一個輕量級的View,它既沒有尺寸,也不會繪制任何東西,所以將它放置在布局當中基本可以認為是完全不會影響性能的。只要在需要的時候顯示它,才會進行加載。

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

ViewStub使用起來非常簡單,只要在需要的時候findViewById()招到它并調用setVisibility(View.VISIBLE)或者inflate()顯示它就可以了。

標簽小結
標簽 使用原因 優化結果 使用舉例
提取公共部分,提高布局復用性 減少測量,繪制時間 App中有多個UI界面需要使用同一布局或部分布局時。如頁面標題toolBar復用時使用。
布局層級減少 減少繪制工作量 當所需要復用的部分布局與要合并到的布局的根標簽一致時使用。(類似加強版include,減少布局層級,但耦合性更強)。
無需第一時間展示于界面上,在需要時加載 減少測量,繪制時間 該界面不需要第一時間展示給用戶,如網絡報錯界面,或用戶信息下拉界面,在該界面中,但第一時間不需要顯示給用戶時使用。
ConstraintLayout約束布局

?AndroidStudio上有一個神奇的功能,就是在Xml布局中我們可以在design標簽下進行布局可視化操作。但是該功能并不完善,屬于系統自動生成的一個布局,反而會讓布局內部凌亂不堪,難以讀懂,同時會造成卡頓,所以以前我們都是用該界面進行預覽查看;而ConstraintLayout約束布局這一新布局,它反而支持布局可視化操作,可以把它比喻成一個可視化視圖操作布局的RelativeLayout,ConstraintLayout是使用約束的方式來指定各個控件的位置和關系的。布局內部不需要嵌套其他布局,就可以完成你想要的界面出現。所以它可以有效的避免布局的嵌套,從而達到優化布局的效果。因為使用太過復雜,想要深入了解使用方法請點擊ConstraintLayout。

減少視圖樹層級結構

系統在顯示沒一個視圖的時候,都要經理測量,布局,繪制的過程。如果我們的布局嵌套層數太多,會導致額外的測量、布局等,十分消耗系統資源,使UI卡頓,影響用戶體驗。所以要盡量減少是圖書層級結構,避免不必要的布局嵌套,使用更少嵌套的布局方式。

查看文件的視圖樹,我們可以使用DDMS來查看。首先運行項目在真機或虛擬機上。而后再到tools中打開DDMS。這里就不展開介紹了。

其他

嵌套的LinearLayout中,盡量不要使用weight,因為weight會重新測量兩次。

Layout的選擇,以盡量減少View樹的層級為主,去除不必要的嵌套和View節點。比如如果LinearLayout嵌套過多,建議使用RelativeLayout減少布局嵌套。

RelativeLayout本身盡量不要嵌套使用。

View視圖的隱藏與現實,盡量使用invisible。因為gone,不占用空間,視圖會重新測量繪制;而invisible視圖不會重新繪制,但仍然占用空間位置。

布局調優工具:hierarchy viewer,Lint tool

鏈接:https://www.jianshu.com/p/faf...

閱讀更多

react-native技術的優劣*

開發了幾個小程序后,說說我對小程序的看法

NDK項目實戰—高仿360手機助手之卸載監聽

(Android)面試題級答案(精選版)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11885.html

相關文章

  • JavaScript實現無限級遞歸樹

    摘要:需求最近遇到一個需求,平時被后臺慣著直接返回了樹形結構給到前端,前端對這種嵌套類型的數據如地區的級聯或菜單的樹形結構省掉了一層處理。當然,沒用好就相當于一堆廢鐵,甚至將導致一些不可預料的結果。相比起遞歸,我更喜歡這種方法。 需求 最近遇到一個需求,平時被后臺慣著直接返回了樹形結構給到前端,前端對這種嵌套類型的數據(如地區的級聯或菜單的樹形結構)省掉了一層處理。換了個后臺小哥哥返回了扁平...

    atinosun 評論0 收藏0
  • 漫畫:一招學會TCP三次握手和四次揮手

    摘要:三次握手和四次揮手的問題在面試中是最為常見的考點之一。上面有一個非常特殊的狀態,它是主動關閉的一方在回復完對方的揮手后進入的一個長期狀態,這個狀態標準的持續時間是分鐘,分鐘后才會進入到狀態,釋放套接字資源。 showImg(https://segmentfault.com/img/remote/1460000018918991); TCP三次握手和四次揮手的問題在面試中是最為常見的考點...

    LuDongWei 評論0 收藏0
  • 小技巧 - 收藏集 - 掘金

    摘要:然而學習布局,你只要學習幾個手機端頁面自適應解決方案布局進階版附源碼示例前端掘金一年前筆者寫了一篇手機端頁面自適應解決方案布局,意外受到很多朋友的關注和喜歡。 十分鐘學會 Fiddler - 后端 - 掘金一.Fiddler介紹 Fiddler是一個http抓包改包工具,fiddle英文中有欺騙、偽造之意,與wireshark相比它更輕量級,上手簡單,因為只能抓http和https數據...

    A Loity 評論0 收藏0

發表評論

0條評論

lijy91

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<