iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Mobile Development

新手向Android&Kotlin學習紀錄30天系列 第 10

第10天 ConstraintLayout 詳細介紹(三) : Circular Positioning、Group

  • 分享至 

  • xImage
  •  

接續昨天繼續介紹ConstraintLayout的工具跟特性

Chains

很具象化的命名,將兩個以上的元件以vertical或horizontal的方式牢牢鍊住。元件與元件之間建立雙向鏈結。

如何建立chain

  1. 以建立horizontal chain示範,選取要建立鍊條的至少2個元件,對任一元件按滑鼠右鍵:
  2. 建立成功,元件的vertical的位置是不變的,頭尾兩元件會自動與layout或附近的其他元件建立約束。
  3. 若要元件排列成同一列,對任一元件按滑鼠右鍵使用Align工具(圖示很容易理解)選擇vertical center模式
  4. 完成元件在畫面同一列垂直方向置中
    (註:橘色圖是做完前3個步驟,才想說加入一個非鍊結的元件對比看看,加了之後再重新操作1~3步驟,希望不要造成疑惑XD)

加上鍊條後,可以選擇三種模式:

  • spread : 預設,約束線兩端點間的空白等距分布,頭尾兩元件不會貼著約束端點。
  • spread inside :頭尾兩個元件固定在約束的端點,中間的元件等距分布。
  • packed : 向鍊條中心集中排列。
  • 在上面三種模式下,並且依鍊條走向將寬度或高度設為"0dp",使用元件的weight去做長度佔比分配,在不在同一行列上都行。(如下2張圖)


Circular Positioning

到目前為止都是介紹上下左右的定位方式,android還提供了3個屬性以畫圓的概念,來約束兩個元件的相對位置,而這三個屬性是設在非圓心的那個元件上:

  • layout_constraintCircle : 設定當圓心的元件的id
  • layout_constraintCircleRadius : 半徑,兩個元件的固定距離"dp"
  • layout_constraintCircleAngle :元件自己要在圓心的什麼角度 (0 ~ 360之間),"0"是12點鐘方向,"90"是3點鐘方向,以此類推,順時針增加角度。

實際看例子比較好理解

在小綠人元件上設定上面3個屬性,一旦設定後,在設計圖上,小綠人就沒有行動自由了,只能跟圖釘保持45度角移動,移動主導權在紅圖釘上,且可以被趕到畫面之外。

    <!--紅圖釘-->
    <ImageView
        android:id="@+id/imageRedPin"
        android:layout_width="100dp"
        android:layout_height="100dp"
        app:srcCompat="@drawable/icon_pin" />

    <!--小綠人-->
    <ImageView
        android:id="@+id/imageRunningMan"
        android:layout_width="100dp"
        android:layout_height="100dp"
        app:layout_constraintCircle="@id/imageRedPin" <!--以紅圖釘為圓心-->
        app:layout_constraintCircleAngle="45"         <!--在紅圖釘的45度角方向-->
        app:layout_constraintCircleRadius="200dp"     <!--距離紅圖釘圖檔中心200dp-->
        app:srcCompat="@drawable/ic_directions_run" />

週日別黏在電腦桌前,菇得掰~


上一篇
第9天 ConstraintLayout 詳細介紹(二) : Guideline、Barrier、Group
下一篇
第11天 ConstraintLayout 詳細介紹(四) : Flow、ImageFilterView、ImageFliterButton
系列文
新手向Android&Kotlin學習紀錄30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言