技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
4
0
Mobile Development
菜雞 Android APP 從安裝 Android Studio 到上架 Google Play
系列 第
4
篇
Day4-Android APP 佈局
kotlin
android app
linrear layout
relative layout
constraintlayout
Deron
團隊
甘阿餒
2020-09-17 13:27:19
2600 瀏覽
分享至
佈局是什麼?
佈局有哪些?
Q:佈局是什麼?
A:佈局就是一個容器,可以裝一堆元件,也可以裝佈局
Q:佈局有哪些?
A:LinearLayout、RelativeLayout、ConstraintLayout等等 (今天先介紹這三種)
Q:既然佈局都是裝元件的,那我要這麼多種佈局幹嘛?
A:每一種佈局內部擁有的元件,
排列
、
對齊
方式都不一樣
下面我們用圖來看,會比較清楚
LinearLayout (線性佈局) ------ 第一種佈局
上圖這個APP畫面最外面 LinearLayout 包著 TextView,也包著另一個 LinearLayout。
從上圖可以知道 LinearLayout 這個佈局 ( 容器 )裡面的元件,有兩種對齊方式
垂直
-> 像是上圖最外層的 LinearLayout
水平
-> 像是內層下面那個 LinearLayout
我們以
蝦皮APP
為例子來分析一下
由於我們認識的元件還不多,這邊先大概理解就可以了!
上半部
最外層 ScrollView 這個元件可以讓內部的畫面滑動顯示
中間層 LinearLayout 當作畫面的佈局,意思是接下來內部的東西要垂直對齊
最內層 由前面解說發現,佈局其實也可以包住佈局,所以這裡四個不同區塊,可以是元件、也可以是佈局
下半部
水平的 LinearLayout 包進五個元件
這裡有一點要提醒大家:上面所說的都只是對這個畫面的
分析
,意味著這個畫面不一定是 100% 像我說的這樣製作出來,每位工程師的設計方式都會有些許差異,懂的工具多寡也會影響。
RelativeLayout (相對佈局) ------ 第二種佈局
假設我們最外層是 RelativeLayout 佈局,裡面有 A、B、C 三個元件
從左到右五張圖
第一張 -> 元件隨意擺放,尚未對齊
第二張
將 A 元件對齊 RelativeLayout 的左邊
將 A 元件對齊 RelativeLayout 的上面
第三張
將 B 元件對齊 A 元件的底下
將 B 元件對齊 RelativeLayout 的左邊
第四張
將 C 元件的 Top 對齊 B 元件的 Top
第五章
將 C 元件對齊 B 元件的右邊
結論:RelativeLayout 就是看你的元件想要在誰的附近,利用這種彼此相對的位子來對齊。當然也可以對齊外層包住自己的佈局
一樣讓我們找個畫面來分析看看
ConstraintLayout ------ 第三種佈局
ConstraintLayout 其實可以當作是
RelativeLayout 的升級版
除了相對關係的對齊方式以外,可以自己在畫面上加上一條
隱形的線
用以對齊
Q:這條線有什麼用處呢?
A:可以依照手機尺寸的比例,去設置你線的位置,再利用這條線的相對位置去對齊
優點1:你的 APP 在不同手機上,顯示不會差異太大
不管手機的螢幕尺寸、密度、解析度
優點2:不用像 RelativeLayout 一樣,一定得對著某個東西對齊
這條線是隱形的,意味著只有開發的你看的到,使用者不會看到他顯示在你的APP上。
優點3:也是最重要的一點,當畫面複雜時,ConstraintLayout 的效能會比 LinearLayout 和 RelativeLayout 好很多。
這點我們後面再解釋,先知道這個東西很讚就對了!
ConstraintLayout 的範例我就不放了,基本上,上面的範例都可以藉由這種
隱形線+相對位置
去對齊達到效果。
今天我們認識了三個重要的
佈局
,明天我們要認識一些基本的
元件
,熟悉之後,我們會再舉一些有名的 APP,去分析一下上面的效果分別是對應到哪個元件。
留言
追蹤
檢舉
上一篇
Day3-Android APP 設計畫面的地方
下一篇
Day5 - Android LinearLayout 佈局使用
系列文
菜雞 Android APP 從安裝 Android Studio 到上架 Google Play
共
30
篇
目錄
RSS系列文
訂閱系列文
19
人訂閱
26
Day26 - 設定路由器防火牆開通HTTP、80與HTTPS 443 Port
27
Day27 - Google Play Console
28
Day28 - Build APK & 發佈審核
29
Day29 - 回顧這個月做的事情
30
Day30 - Android APP 最後一天
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19847
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
[Javascript] 非同步執行,如何延緩後面程式的處理 ??
FortiGate SSLVPN替代方案?
AARQ 通訊協議是?
SSLVPN 轉 IPSEC VPN 的問題
Dell or Asus 伺服器,哪牌比較好?
Dell or Asus Storage 或NAS,哪牌比較好?
將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動
iT邦幫忙如何搜尋 關鍵字?
sdray vigor2927 sslvpn ip設定問題
Qnap帳號於同一個IP反覆登入失敗.
熱門回答
FortiGate SSLVPN替代方案?
[Javascript] 非同步執行,如何延緩後面程式的處理 ??
Dell or Asus 伺服器,哪牌比較好?
將硬碟上的 EFI 分割區複製到固態硬碟後,ARM 架構的 Ubuntu Server 無法啟動
iT邦幫忙如何搜尋 關鍵字?
熱門文章
c++的.h和cpp,放在相同目錄下好,還是頂層就用include,src分開好? [搬運/問答]
人工智慧模型 LLM (單一模型) 與 人工智慧代理 AI Agent(人工智慧代理)是什麼?兩者之間的關鍵差異?
別再只是做報表了,真正的人資資料分析是這樣做的
你的產品用了多少開源軟體?如何掌握潛在漏洞與風險?
AI 音樂創作指令(Prompt)深度指南:解鎖主流AI 音樂生成工具的全部潛力
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}