Day 2 為什麼要學Compose UI?

Teng Wang
Sep 7, 2021

--

2021 鐵人賽 一天一腳步,30天學會 Android Compose UI!

嗨!大家好,我是Teng:

今年的疫情蠻嚴重的,希望大家都過得安好,希望疫情快點過去,能回到一些線下技術聚會的時光~

不知不覺又到了鐵人賽的時間,經Kotlin讀書會的鼓舞,想試著藉由鐵人賽讓自己學會一些新的技術且分享給各位。

昨天我提到的三個問題,分別如下:

  1. 為什麼要學 Compose UI?
  2. Compose UI有什麼好處?
  3. 不學會怎樣嗎?

這幾個問題,我想先回朔到當時的時空背景來看,當然你也可以拉到最下面直接看我的想法。

  • 歷史沿革

我一開始看到 Compose UI 的時候,第一個想法是原本的 xml UI 用得好好的,為什麼要推出學新的 UI 撰寫方式呢?而且當初剛入門學 Android 的時候,看到的一些技術文章都會提倡 Android 的優秀之處就是強制 UI(xml) 跟程式碼分離,現在怎麼反而要把UI跟程式混在一起了呢?

  • 但這邊要停一下,回頭想想 Android 這個語言從誕生到了現在有多久了?一查之下發現,快要20年了!所以當時的一些好處,因為現在時空背景的不同,已經不一樣了,譬如:
  1. xml 用來標示 UI 所有的 Android 工程師都很熟悉了,但是到底好不好用?
  2. 我們每天都用得到Android的View,可以猜測一下目前View有多少行了? 可以看下圖,已經有三萬多行。
  3. 近年來也有了 Flutter 宣告式 UI 語言成功經驗在前面。
  4. 軟體開發測試的需求越來越多。 (要怎麼測試xml與程式碼的互動? )
打開View.java檔,看看精美的3萬多行 code

假設一下,你是要負責重構 View 的工程師,你會怎麼規劃重構 View 這個Class,需要多久時間?

  • Compose UI 有哪些優缺點?

整理一下我目前了解到的優點:

  1. 已學過宣告式語言的人來學很快。
  2. 內建了比較現代的 Android UI Design。
  3. UI 設計比以前方便使用。
  4. 寫測試比較直覺。
  5. 向下相容。
  • Compose UI 包含哪些內容?

已涵蓋目前所有的基礎UI元件,包括Raw, Cow, Graphics, Grad layout等等。 也有Android UI元件讓你繼續使用現有的UI 元件。

  • 小結

我認為這是一個短期內不學不會怎樣,學了會具備更多開發手段的技術。

同時我也相信接下來 Google 應該會盡量把資源都放在 Compose UI 的發展上,就像以前的 Relative Layout ,在現在的 IDE 上已經慢慢的不支援了一樣。

說完這些,有沒有人有不同的想法?歡迎提出,哈哈!

沒有問題的話,明天就開始進入實作囉!

本文同步發表在 iT邦幫忙 上 文章連結

參考資料:

--

--