1. 程式人生 > >Android Studio官方文件之使用佈局編輯器來設計UI介面

Android Studio官方文件之使用佈局編輯器來設計UI介面

ConstraintLayout基本介面

在今天的文章開始之前,有個忙想請大家幫一下,希望在京東、淘寶、噹噹、亞馬遜購買了我的書《Android群英傳:神兵利器》的朋友們,幫忙去網店上給個簡短的評價,舉手之勞,還是多謝大家啦~~

更新Android Studio 2.2之後,更新了佈局設計器,同時,引人了ConstraintLayout,這一佈局,旨在降低佈局層級,其主要介面如下所示:

這裡寫圖片描述

這個介面主要分成下面幾個部分:

  • 左側邊欄,包括Palette元件庫和Component Tree
  • 中間是佈局設計器,包括兩部分,左邊是檢視預覽,右邊是佈局約束
  • 右側邊欄,上面是類似盒子模型的邊界和大小布局設計器,下面是屬性列表

在熟悉了介面之後,我們要做的就是理解,什麼是ConstraintLayout。ConstraintLayout的核心,實際上就是『約束』,這個翻譯很直接,也很準確,它可以說是一個強化的
RelativeLayout,只不過比RelativeLayout增加了更多的約束條件和方式,從這一點上去理解,就很容易接受了。

在第一次引人ConstraintLayout的時候,Android Studio會自動去下載依賴,等他自動完成安裝即可。
最後,在build.gradle中會新增一行依賴:

<code class="hljs bash has-numbering">compile <span class="hljs-string">'com.android.support.constraint:constraint-layout:1.0.0-alpha8'</span></code><ul style="" class="pre-numbering"><li>1</li></ul>

Google提供了一個CodeLab來幫助開發者熟悉這個佈局,地址如下所示:

同時,2016IO上Google也給出了一個Topic來講解,地址如下所示:

ConstraintLayout約束型別

簡單的說,約束,就是元件與元件之間的關係,借用官網上的一張圖,我們來解釋下:

這裡寫圖片描述

這裡展示的,就是左右兩個Button直接的關係,這實際上就是一個簡單的相對佈局方式,下面我們來看一下具體的約束型別。

當我們點選一個控制元件的時候,它的顯示效果如圖所示:

這裡寫圖片描述

這裡主要包含幾種型別的約束

  • 尺寸約束
  • 邊界約束
  • 基準線約束

我們一一來看。

尺寸約束

尺寸約束使用的是『實心方塊』,如圖:

這裡寫圖片描述

這個很好理解,就是調整元件的大小。

邊界約束

邊界約束使用的是『空心圓圈』,如圖:

這裡寫圖片描述

邊界約束,是使用最多的約束,它用於建立元件與元件之間、元件與Parent邊界之間的約束關係,實際上,就是確定彼此的相對位置。

基準線約束

基準線約束,使用的是『空心圓角矩形』,如圖:

這裡寫圖片描述

基準線約束,是讓兩個帶有文字屬性的元件進行對齊的,可以讓兩個元件的文字按照基準線進行對齊。唯一要注意的是,你需要把滑鼠放在控制元件上,等基準線約束的圖形亮了,才可以進行拖動。

清除約束

通過工具欄上的『清除約束』按鈕,或者是控制元件上的懸浮提示,都可以清除一個控制元件的所有約束條件,如圖:

這裡寫圖片描述

掌握好這幾種約束條件的使用後,就可以自己去嘗試下了,我們只要拖一個控制元件,來體驗下。

約束示例

這裡我把官網上的幾個Demo的動圖Copy過來:

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

自動約束Autoconnect

在佈局設計器的選單欄上,有一個『磁鐵』一樣的圖示,如圖:

這裡寫圖片描述

預設這個按鈕就是開啟的,通過這個,我們可以實現元件約束的自動建立,Demo示例如圖:

這裡寫圖片描述

這個和PPT裡面拖動佈局的時候,會彈出對齊的基準線,然後幫你自動居中這些功能類似。實際測試下來,這個功能可以很方便的在拖動元件的時候,幫你寫好約束,但有些精確的調整,還是需要手動去建立的。

約束推斷Inference

在佈局設計器的選單上,還有一個『燈泡』一樣的按鈕,通過這個按鈕,可以幫我們自動建立元件間的約束關係,他分析的是一個元件附近的元件,並根據當前在設計面板中的位置來建立約束關係。

約束推斷這個功能非常強大,我們只需要把元件拖到一個地方,然後就可以通過推斷,來完成最基本的約束建立,最後,手動進行完善即可。

這裡寫圖片描述

View Inspector

Inspector介面就是設計佈局的右邊欄,包含了一個類似盒子模型的佈局檢查器和對應屬性的屬性列表,如圖所示:

這裡寫圖片描述

屬性這一塊我們就不看了,和大家在XML中寫的屬性是一樣的,只不過這裡通過視覺化的方式弄出來了,這個之前就有了,我們主要來看下上面的那個介面。

18

這上面的ID,不多說了,這個盒子四周的線,代表著我們的Margin設定,在工具欄上,還可以設定Margin的基數,對於MD設計風格,這個基數一般是8dp,所以,這裡可以選擇X8的Margin:

這裡寫圖片描述

另外,最外面邊框上還有兩個帶數字的小圓圈,這個就是控制相對位置的比例的,如圖:

這裡寫圖片描述

通過這個比例的設定,我們天然就自帶了百分比佈局。

最後,最難理解的就是盒子裡面的那四根線,如圖:

這裡寫圖片描述

這裡的四根線,在點選後,會發生變化,總共有以下幾種:

Fixed

這裡寫圖片描述

這樣一個型別的線,可以讓你寫定具體的大小數值。

Wrap Content

這裡寫圖片描述

這個就是Wrap Content的含義,包裹內容,沒有發生變化。

AnySize

這裡寫圖片描述

這個就是最難理解的,它表示元件會佔用所有的可用空間來適應約束,類似線性佈局中,設定width=0,weight=1的方式。

Align

在工具欄中,可以使用對齊工具,快速給選定元件設定對齊約束,如圖:

這裡寫圖片描述

我們可以來演示下:

這裡寫圖片描述

Pack

在工具欄中,可以使用Pack工具,快速對元件進行編組操作,如圖:

這裡寫圖片描述

快捷佈局

在一個元件上點選右鍵,可以快速建立一些佈局的快捷設計,如圖所示:

這裡寫圖片描述

在這裡,可以快速設定元件的居中,對齊等方式。

GuideLine

為了更加靈活的佈局,ConstraintLayout還提供了一個GuideLine,如圖所示:

這裡寫圖片描述

你可以為佈局新增水平和豎直引導線,針對這條線來作為基準線佈局,如圖所示:

這裡寫圖片描述

ConstraintLayout佈局轉換

通過Android Studio,我們可以很方便的把一個普通佈局轉化為ConstraintLayout,在佈局設計器的左邊欄下面的Component Tree來進行轉換,如圖所示:

這裡寫圖片描述

轉換還是很讚的,但目前還沒試過複雜的佈局是否有問題。

從程式碼角度理解ConstraintLayout屬性

ConstraintLayout被稱為增強的RelativeLayout,是有它的原因的,相對佈局提供了layout_toBottomOf類似這樣的屬性來控制組件間的相對位置,那麼ConstraintLayout實際上也是一樣的,我們來看這樣一個屬性:

<code class="hljs css has-numbering"><span class="hljs-tag">app</span><span class="hljs-pseudo">:layout_constraintTop_toBottomOf</span></code><ul style="" class="pre-numbering"><li>1</li></ul>

他代表的是『期望元件的頂部,與指定元件的底部對齊』,那麼瞭解了這個解釋方式,其它的屬性就很好理解了,所以說,雖然ConstraintLayout不太建議通過程式碼來佈局了,但能理解程式碼的含義,對理解ConstraintLayout佈局是非常有幫助的。

相關推薦

Android Studio官方使用佈局編輯設計UI介面

ConstraintLayout基本介面 在今天的文章開始之前,有個忙想請大家幫一下,希望在京東、淘寶、噹噹、亞馬遜購買了我的書《Android群英傳:神兵利器》的朋友們,幫忙去網店上給個簡短的評價,舉手之勞,還是多謝大家啦~~ 更新Android Studio 2.2之後,更新了佈局設計器,同

Android官方DataBinding庫

本文與公眾號三七文件庫同步。 本文由三七原創翻譯,轉載前務必聯絡三七。 本文件介紹瞭如何使用DataBinding庫來編寫宣告式佈局,並儘量減少繫結應用程式邏輯和佈局所需的中間程式碼。 DataBinding庫提供了靈活性和廣泛的相容性 - 這是

Spring Boot 2.0官方 Actuator(轉)

執行器(Actuator)的定義 執行器是一個製造業術語,指的是用於移動或控制東西的一個機械裝置,一個很小的改變就能讓執行器產生大量的運動。 An actuator is a manufacturing term that refers to a mechanical device for

Android-0.Android Studio幫助相關

在AndroidStudio中將滑鼠移動到某個API上預設是不顯示註釋文件的。要想AndroidStudio顯示註釋文件需要以下操作: 1.點選SDK Manager,在SDK Tools中檢查Documentation for Android SDK是否下載了,如果沒有下

Shiro官方第一個Shiro程式

Your First Apache Shiro Application If you’re new to Apache Shiro, this short tutorial will show you how to set up an initial and v

vuejs官方元件註冊

元件名 在註冊一個元件的時候,我們始終需要給他一個名字,比如在全域性註冊的時候我們已經看到了 Vue.component('****',{*******}) 該元件名就是Vue,component的第一個引數。 你給予元件的名字可能依賴於你打算拿他來做什麼,當直接在d

Shiro官方架構

Apache Shiro Architecture Apache Shiro’s design goals are to simplify application security by being intuitive and easy to use. Shiro’s core desi

hadoop2.8.2官方分散式叢集

目標 這個文件介紹怎麼使用Hadoop叢集,從幾個節點到幾千個節點。想要玩轉Hadoop,你可能需要先嚐試一下單節點模式:see(單節點模式) 這個文件不包括一些高階主題,比如:安全性和高可用性。 需求 安裝java正確版本。(單節點模式中介紹瞭如

ArcGIS API For JavaScript官方熱力圖渲染

一、API類:HeatmapRenderer             require(["esri/renderers/HeatmapRenderer"], function(HeatmapRenderer){ /*主體程式碼*/ }); 二、描述     Heatma

Android Studio四大組Service

service man 頁面 修改 src 抽象方法 activit timer 0ms Service在Android運行在後臺,它沒有可視化界面,只是默默運行在後臺。我們以一個後臺定時器的例子清晰的說明Service的運行流程。 一、創建Service類 項目右鍵-&g

使用Android Studio進行NDK開發和除錯(gradle-experimental官方的翻譯說明)

版本更新 環境要求 Gradle(參照三裡邊的版本要求) Android NDK r10e Build Tool在19.0.0以上的SDK Gradle版本要求 不同版本的Experimental Plugin需要不同版本的gradle

Unity3D 官方 平臺特殊化Android

版本:unity 5.6  語言:C#  總起: Android平臺,雖然與IOS開發類似,但因為其硬體沒有完全的標準化,所以會出現各式各樣的問題。這一點在官方文件的第一段就提到了。 Unity Android基本環境的搭建還是比較容易的: 1.Unity本身沒有下載A

史上最詳細的Android Studio百度地圖(BaiDuMap)開發教程,可以當作官方的教科書級別教程!

本文是續寫一一哥作品,(一些大神沒想過要寫出來的,而笨小白又不懂的,,稍有完善。) 原文:http://blog.csdn.net/syc000666/article/details/50756551 由於工作原因,需要用到地圖模組,之前一直是用Eclipse開發百度地圖

Unity開始android開發旅——官方翻譯

本譯文只是自己檢視官方文件時的學習之作,大家以批判的方式來看待。 開始android開發之旅 為andorid作業系統開發遊戲使用的方式和IOS開發類似。但是,相較於IOS開發,android開發有一個嚴重的問題就是對於所有的android裝置來說,他們的硬體並不是完全標

Android官方—User Interface(Input Events)

輸入事件 在Android上,有多種方法可以攔截使用者與您的應用程式互動的事件。在考慮使用者介面中的事件時,方法是從使用者與之互動的特定View物件中捕獲事件。 View類提供了這樣做的方法。 在用於構成佈局的各種View類中,您可能會注意到幾種對UI事件有用的公共回撥方法。當在該物件上發生

Android官方—User Interface(Input Controls)(Pickers)

選擇器 Android為使用者提供控制選擇時間或選擇日期作為隨時可用的對話方塊的控制元件。每個選擇器提供控制以選擇時間(小時,分鐘,上午/下午)或日期(月,日,年)的每個部分。使用這些選擇器有助於確保您的使用者可以選擇有效,格式正確的時間或日期,並根據使用者的區域設定進行調整。 我們建

Android官方—User Interface(Input Controls)(Checkboxes)

複選框 複選框允許使用者從集合中選擇一個或多個選項。通常,您應在垂直列表中顯示每個複選框選項。 要建立每個複選框選項,請在佈局中建立一個CheckBox。由於一組複選框選項允許使用者選擇多個專案,因此每個複選框都是單獨管理的,您必須為每個專案註冊一個點選監聽器。 響應Click事件

Android官方—User Interface(Input Controls)(Text Fields)

文字域 文字域允許使用者在您的應用中鍵入文字。它可以是單行或多行。觸控文字欄位會放置游標並自動顯示鍵盤。除了鍵入之外,文字欄位還允許進行各種其他活動,例如文字選擇(剪下,複製,貼上)和通過自動完成查詢資料。 您可以使用EditText物件向佈局新增文字欄位。您通常應該在XML佈局中使用<

Android官方—User Interface(Input Controls)(Buttons)

Buttons 按鈕由文字或圖示(或文字和圖示兩者)組成,用於傳達使用者觸控時發生的操作。 根據您是否需要帶有文字,圖示或兩者的按鈕,您可以通過三種方式在佈局中建立按鈕: 使用文字,使用Button類: <Button android:layout_wi

Android官方—User Interface(Input Controls)(概述)

輸入控制元件 輸入控制元件是應用程式使用者介面中的互動式元件。 Android提供了可在UI中使用的各種控制元件,例如按鈕,文字欄位,搜尋欄,複選框,縮放按鈕,切換按鈕等等。 向UI新增輸入控制元件就像在XML佈局中新增XML元素一樣簡單。例如,這是一個帶有文字欄位和按鈕的佈局: &nb