我用ConstraintLayout寫了個登錄頁面,原來是那麼的好用

2020-12-25 勤與奮

ConstraintLayout布局目前網上也傳了很多的資料,也寫過不少的文章大家應該都看過。這次我就用個真是的按鈕來實現這個布局,登錄界面大家應該接觸很多,寫登錄界面的布局方式也很多,只要是安卓提供的布局都可以完成登錄界面,但是性能可能是沒有ConstraintLayout好,畢竟是google為了解決布局性能而出的一個布局。

圖1 ConstraintLayout布局案例

登錄界面簡單介紹

一個公司的APP產品少不了登錄界面,登錄界面是一個APP最基本的頁面,上圖的界面也很簡單,從頭到位也就是一些基礎控制項完成,大家可以看看圖2代碼結構,這個結構就是眼前登錄界面的全部了,外層就是ConstraintLayout一層。而內部也就是一些基礎控制項,不再像之前還要添加各種布局來完成這個界面,其實有人覺得用RelativeLayout也能完成這個界面,其實RelativeLayout完成也是可以,但是性能沒有這個好,還有就是ConstraintLayout可以支持百分比。

圖2登錄頁面的布局結構

ConstraintLayout和RelativeLayout對比

第一:意圖ConstraintLayout是通過對每個視圖應用一些規則來優化和展平布局的視圖層次結構,以避免嵌套。規則提醒您RelativeLayout,例如將左側設置為其他視圖的左側。

app:layout_constraintBottom_toBottomOf="@+id/view1"與之不同的是RelativeLayout,ConstraintLayout提供bias用於相對於手柄以0%和100%水平和垂直偏移定位視圖的值(用圓圈標記)。這些百分比(和分數)提供了跨不同屏幕密度和大小的視圖的無縫定位。

app:layout_constraintHorizontal_bias="0.33" <!-- from 0.0 to 1.0 -->app:layout_constraintVertical_bias="0.53" <!-- from 0.0 to 1.0 -->基線手柄(帶圓角的長管,圓形手柄下方)用於將視圖的內容與另一個視圖參考對齊。

方形手柄(在視圖的每個角上)用於調整dps中的視圖大小。

第二:RelativeLayout是一種雙向布局。它必須至少測量/布局兩次。ConstraintLayout不會遭受此性能損失。

第三:非常強大的用途是通過形成鏈來對元素進行分組。通過這種方式,我們可以形成一組視圖,這些視圖作為一個整體可以以期望的方式放置而不添加另一層次的層次結構以形成另一組視圖。

第四:除了重量,我們可以應用水平和垂直偏差,這只是從中心位移的百分比。(0.5的偏差意味著居中對齊。任何小於或等於的值意味著在相應方向上的相應移動)。

第五:另一個非常重要的特性是它尊重並提供處理GONE視圖的功能,這樣如果某些視圖通過java代碼設置為GONE,布局就不會中斷。

一個很大的區別是,即使視圖消失,ConstraintLayout也會尊重約束。因此,如果您有一個鏈並且您想讓視圖在中間消失,它將不會破壞布局。

所以ConstraintLayout好處多的去了,而且用起來也很簡單。同時也支持界面拖拉,但是我還是建議大家不要太依賴工具,能動手寫的就用手寫xml方便以後維護。

相關焦點

  • 強大的 ConstraintLayout
    ContraintLayout 是一個 Google 發布的一個新布局( 翻譯成中文 「約束布局「 )它的使用方式有兩種在 AS 2.3 以上版本都可以使用滑鼠拖動使用代碼書寫控制項之間的約束這篇文章雖然是 ConstraintLayout 專題文章,但是只是介紹了高頻用法,那些不常用的功能或細節並沒有細講這篇文章是我之前寫過一遍,感覺好多地方寫的不是太好
  • Android ConstraintLayout使用指南
    成功添加約束後,即可得到正常的運行效果了。當為目標控制項設置好橫縱向的約束時(app:layout_constraintLeft_toLeftOf="parent"、app:layout_constraintRight_toRightOf="parent"或者app:
  • ConstraintLayout 介紹
    app:layout_constraintLeft_toRightOf="@+id/buttonA" />經常用到約束屬性列表:layout_constraintLeft_toLeftOflayout_constraintLeft_toRightOf
  • Android ConstraintLayout約束布局可視化工具使用~
    ,豈不是兩全其美這裡還有一些其他操作 簡單看一下,我是經常用 XML 寫、一些可視化操作我也沒有用過,大家如果要使用的話點一點操作操作看一下什麼效果學習一下就好了>解釋:就是 寫這個行代碼的 控制項的 AAAA 這個邊 與 這個表達式的值所代表的 控制項 的 BBBB 這個邊 建立約束,比處較繞嘴下邊具體舉個例子假如有個 TextView 的控制項 寫了一個 app:layout_constraintBottom_toBottomOf="parent" 約束
  • Android MotionLayout動畫:續寫ConstraintLayout新篇章
    ConstrantLayout約束布局,用過的人都說好,反正我用著挺爽的。有部分同學說性能問題,其實對於初中級開發者來說,暫無需考慮這個,相比自己動手嵌套幾層布局強吧,而且更重要的是業務UI的實現,尤其工作量大的時候。本文屬於入門級別,重點在於掃盲和入門。如果對你有用,歡迎點讚。個人能力有限,有些東西可能理解不透或不對,歡迎指正,非常感謝。
  • 帶你了解 Android 約束布局 ConstraintLayout
    ConstraintLayout是Android新推出的一個布局,其性能更好,連官方的hello world都用ConstraintLayout來寫了。所以極力推薦使用ConstraintLayout來編寫布局。本文主要介紹一下如何使用代碼來編寫ConstraintLayout布局。好了,開始我們的徵程。
  • MotionLayout系列之配合布局CoordinatorLayout, DrawerLayout, ViewPager使用
    作者:談小龍連結:https://www.jianshu.com/p/ddf434aa4de8在前量部分我們引入了幾個示例:在一,二部分已經大量的介紹了 MotionLayout 的功能,在這部分我們將介紹如何在已有的項目中使用 MotionLayout ,整合到已有的布局中(CoordinatorLayout, DrawerLayout, ViewPager
  • Android 這些 Drawable 你都會用嗎?
    app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf
  • 巧用 display: contents 增強頁面語義
    看個簡單的例子。這個屬性我一直在思考有什麼非常適合的使用點。總結來說,這個屬性適用於那些充當遮罩(wrapper)的元素,這些元素本身沒有什麼作用,可以被忽略的一些布局場景。充當無語義的包裹框最近寫 React、Vue 的時候,發現這個屬性在寫 JSX 的時候能有很好的作用,並且也非常符合這個屬性本身的定位。
  • 登錄頁面優化:盤點6款提升轉化的登錄頁面生成器
    如果你的數據分析顯示活動活躍但訪問量較低,那麼你的登錄頁面可能是「罪魁禍首」。這裡有6個工具,可以幫你生成一個成功的亞馬遜登錄頁面,並在你想看到的地方獲得流量數據。 為什麼要使用亞馬遜的登錄頁面生成器而不是自己創建呢? 有些事情你可以自己做,有些事情是值得花錢請專業人士來處理的。除非你有充分的時間和技能,這就是為什麼使用亞馬遜登錄頁面生成器可以真正幫助到你的原因。
  • 如何讓登錄體驗更佳:10個頁面設計技巧和例子
    登錄頁面設計是網站用戶體驗流程的關鍵部分。好的設計有助於推動訪問者訪問你的網站,並把新用戶進行轉化。它也給返回用戶一個簡單的方式登錄到您的網站。以下案例中我們將提供:當你設計你的登錄界面的時候,你應該做什麼和不應該做什麼。不是所有的提示和例子都適用於你的產品。關鍵是選擇最適合你的。
  • 如何優化網站登錄頁面?
    通常網站會將主頁設置為登錄頁面,但對於許多用戶搜索的關鍵詞而言,主要雖然信息全面,卻沒有針對性內容,很可能因為沒有找到想要的內容而離開。如何優化網站登錄頁面?因此,我們需要為不同關鍵詞設置不同登錄頁面。那麼,網站怎麼優化登錄頁面才能擁有更高轉化呢?
  • PCB layout用啥軟體比較好?Cadence or AD?
    PCB layout是什麼本文引用地址:http://www.eepw.com.cn/article/201804/378483.htm  PCB layout是印刷電路板。