Jetpack Compose 是 Android 的新型工具包,可用來建構原生使用者介面。這個工具包可簡化並加快 Android 上的 UI 開發作業,讓您透過較少的程式碼、強大的工具和直觀的 Kotlin API,讓您的應用程式更貼近生活。可讓您更輕鬆快速地建構 Android UI。建立 Compose 的過程中,我們與多位合作夥伴通力協作,他們親身體驗了上述所有優勢,並與我們分享了一些心得。

程式碼更少

編寫更少程式碼會影響所有開發階段:做為程式碼編寫者,您可以專心處理眼前問題,因為需要測試及偵錯的程式碼會更少,發生錯誤的可能性也更小。做為審查者或維護者,您需要閱讀、理解、審查及維護的程式碼就更少。

與使用 Android View 系統相比,Compose 可讓您以更少的程式碼完成更多工作:按鈕、清單或動畫 - 無論您需要建構什麼,現在撰寫的程式碼都更少。以下來自我們的部分合作夥伴的看法:

  • 對於相同的按鈕類別,[code] 比規模小 10 倍。」(Twitter)
  • 「使用 RecyclerView 建構的任何螢幕的大小也顯著減小,其中我們的大多數螢幕都使用 RecyclerView 進行建構。」(Monzo)
  • 「只需要編寫少量程式碼,即可在應用程式中建立清單或動畫,我們對這一點感到非常滿意。在每項功能中,我們編寫的程式碼行更少了,這使得我們能夠更專注於為客戶創造價值。」(Cuvva)

您在編寫的程式碼僅以 Kotlin 編寫,而非分別在 Kotlin 和 XML 之間編寫:「只要使用相同的語言編寫程式碼,通常都使用相同的檔案時,透過程式碼追蹤就容易許多,而不是在 Kotlin 和 XML 之間來回切換」(Monzo)

使用 Compose 編寫的程式碼簡單又容易維護您建構的內容。「Compose 的版面配置系統在概念上經過簡化,比較容易理解。而且讀取複雜元件的程式碼也很容易。」(Square)

符合直覺

Compose 使用宣告式 API,也就是說,您只需要描述使用者介面即可,而 Compose 會負責其餘作業。API 符合直覺,易於探索及使用:「我們的主題設定層變得更簡單易懂,且更容易理解。我們可在單一 Kotlin 檔案中完成這項工作,原本可將檔案延伸至多個 XML 檔案,而這些檔案透過多層式主題疊加層負責屬性定義和指派。」(Twitter)

透過 Compose,您可以建構無狀態的小型元件,且不會與特定活動或片段建立關聯。這樣一來,您便可輕鬆重複使用及測試這些元件:「我們給自己設立的目標是,提供一組新的無狀態 UI 元件,確保它們易於使用及維護,並且以直覺化的方式實作/擴充/自訂。Compose 確實為我們提供了可靠解答。」(Twitter)

在 Compose 中,狀態是明確的,並傳遞至可組合項。如此一來,狀態的可靠資料來源就會是單一的,所以可以封裝及分離。之後,隨著應用程式狀態變更,UI 會自動更新。「我們在推理某些事情的時候,大腦很少能進行思考,我們能控制的行為也變得更少,或無法掌握難以理解的行為」(Cuvva)

提升開發效率

Compose 與您現有的程式碼全部相容:您可以從 Views 呼叫 Compose 程式碼,以及從 Compose 呼叫 Views。大多數常用程式庫 (例如 Navigation、ViewModel 和 Kotlin 協同程式) 都能支援 Compose,因此您可以隨時隨地採用這項技術。「由於互通性的關係,我們開始整合 Compose,結果發現它就是能夠達到目的。我們發現,我們不用去考慮淺色或深色模式,整個體驗也極為流暢。」(Cuvva)

使用完整的 Android Studio 支援功能 (例如即時預覽),您還能更快速地疊代及提交程式碼:「Android Studio 中的預覽功能大大節省了時間。建立多個預覽也為我們節省了不少時間。通常,我們須要檢查不同狀態或不同設定下的 UI 元件,例如錯誤狀態,或不同字型大小等。我們能夠建立多個預覽,因此可以輕鬆完成檢查。」(Square)

功能強大

Compose 可讓您直接存取 Android 平台 API,並透過內建的質感設計、深色主題、動畫和其他功能建立精美的應用程式。他說:「Compose 不僅解決了宣告式 UI,還改善了無障礙功能 API、版面配置、各種內容。想將要付諸實現的方法,走起來少了一步!」(Square)。

只要使用 Compose,就能透過動畫輕鬆在應用程式中導入動畫和動畫,並輕鬆快速地實作:「在 Compose 中加入動畫,就幾乎不用再為顏色/大小/高度變更等項目製作動畫效果」(Monzo),「您不必特殊設計就能製作動畫,這點與顯示靜態畫面並無不同」(Square)。

無論是使用質感設計還是自己的設計系統進行建構,Compose 都可以讓您靈活實作所需的設計:「從基礎中分離質感設計對我們來說非常實用,因為我們要開發自己的設計系統,而這通常需要與質感設計不同的設計要求。」(Square)

參閱深入個案研究,進一步瞭解 TwitterSquareMonzoCuvva 如何使用 Compose。