Android開發-掌握ConstraintLayout(一)傳統佈局的問題
在傳統的Android開發中,頁面佈局佔用了我們很多的開發時間,而且面對複雜頁面的時候,傳統的一些佈局會顯得非常複雜,每種佈局都有特定的應用場景,我們通常需要各種佈局結合起來使用來實現複雜的頁面。隨著ConstraintLayout的推出,這種現象有了很大的改善,而且它可以實現很多傳統佈局難以實現的功能。
本系列我們就一起來學習ConstraintLayout的使用,來大幅提高我們的生產力。
傳統佈局
在ConstraintLayout退出之前,我們經常使用FrameLayout, LinearLayout, RelativeLayout, *Layout等來佈局頁面。這些佈局當然有其方便的地方,但是其方便地同時也限制了我們的使用場景,在寫一些複雜頁面的時候就顯得力不從心,我們先做一下簡單地回顧:
- FrameLayout:幀佈局。最常用並且簡單的佈局,通常用於錯誤頁面的顯示,蒙層的顯示等。
- LinearLayout:線性佈局。當我們繪製需要順序排列的內容時,我們使用使用此佈局。
- RelativeLayout:相對佈局。相當於ConstraintLayout的低階版本。顧名思義,可以各個View之間相對地指定位置進行佈局。
- …
存在的問題
以上佈局並不是完美的,比如我們要佈局這個頁面:
我們如果使用傳統的佈局,可能會導致佈局的層級多層巢狀:
<RelativeLayout>
<ImageView/>
<ImageView/>
<RelativeLayout>
<TextView/>
<LinearLayout>
<TextView/>
<RelativeLayout>
<EditText/>
</RelativeLayout>
</LinearLayout>
...
</RelativeLayout>
...
</RelativeLayout>
-
佈局複雜
使用傳統的佈局雖然可以實現我們的需求,但是在程式碼實現中有非常多的巢狀,而且要結合許多佈局的特性來實現,這樣複雜的佈局讓我們難以維護。 -
效率底下
當佈局層級越深的時候,系統的繪製效率越低,當子View.invalidate()的時候,也會導致其父View進行重新繪製。
又比如這些佈局中相對靈活的RelativeLayout,它會被測量至少兩次,已確定最終渲染時的位置,也同樣會影響效率。
-
難以建立複雜動畫
Android在屬性動畫(ObjectAnimator)推出之前,執行動畫的原理其實只是在繪製的時候執行,並不是真正的改變了佈局,在屬性推出之後,雖然確實可以改變其真實的佈局屬性,但是由於佈局特性的約束以及各個View之間的約束,建立複雜的動畫也並非易事。
ConstraintLayout登場!
下面我們進入本系列的主角:ConstraintLayout!
使用ConstraintLayout可以解決以上傳統佈局存在的種種問題,而且Android Studio也提供了強大而且簡單易用的編輯器,使用它可以讓我們的開發效率大大增加。
下一篇我們將介紹它:Android開發 – 使用ConstraintLayout(二)介紹
如有更多疑問,請參考我的其它Android相關部落格:我的部落格地址
相關文章
- Android開發 - 掌握ConstraintLayout(一)傳統佈局的問題AndroidAI
- Android開發 - 掌握ConstraintLayout(五)偏差(Bias)AndroidAI
- Android開發 - 掌握ConstraintLayout(二)介紹AndroidAI
- Android——ConstraintLayout的使用,優化佈局效能AndroidAI優化
- Android開發 - 掌握ConstraintLayout(九)分組(Group)AndroidAI
- Android開發 - 掌握ConstraintLayout(三)編輯器AndroidAI
- ConstraintLayout 平分佈局AI
- 像ConstraintLayout一樣分解你的佈局AI
- Android 隨筆—— 最強大的佈局 ConstraintLayoutAndroidAI
- Android開發 - 掌握ConstraintLayout(八)障礙線(Barrier)AndroidAI
- Android開發 - 掌握ConstraintLayout(六)鏈條(Chains)AndroidAI
- Android開發 - 掌握ConstraintLayout(四)建立基本約束AndroidAI
- Android入門教程:ConstraintLayout約束佈局AndroidAI
- 寫給 Android 開發的小程式佈局指南,Flex 佈局!AndroidFlex
- Android 約束佈局(ConstraintLayout)1.1.0 版詳解AndroidAI
- android 相對佈局,程式碼建立imageview,佈局居中問題AndroidView
- Android開發之常用佈局Android
- CSS 傳統佈局CSS
- 一個窗體佈局的問題
- Android開發 - 掌握ConstraintLayout(十一)複雜動畫!如此簡單!AndroidAI動畫
- Android Material Design控制元件使用(一)——ConstraintLayout 約束佈局AndroidMaterial Design控制元件AI
- Android開發 - 掌握ConstraintLayout(七)輔助線(Guideline)AndroidAIGUIIDE
- Android開發 - 掌握ConstraintLayout(十)按比例設定檢視大小AndroidAI
- ConstraintLayout 水平比例佈局 1:1:2AI
- 阿里Android開發規範:UI 與佈局阿里AndroidUI
- Android開發 - 檢視佈局屬性解析Android
- 約束佈局ConstraintLayout看這一篇就夠了AI
- 剖析一些經典的CSS佈局問題,為前端開發+面試保駕護航CSS前端面試
- 關於rem佈局問題REM
- WWDC 2017:高階開發應該掌握的自動佈局技巧
- 一些Android開發的基本問題Android
- self.view.frame的佈局問題View
- 移動 WEB 開發的佈局方式 ---- 響應式佈局Web
- 開啟數字化,傳統工廠該如何佈局?
- Android 佈局Android
- AndroidUI佈局問題總結AndroidUI
- Android中常見的佈局和佈局引數Android
- 關於css佈局、居中的問題以及一些小技巧CSS