Jetpack Compose 是 Android 的新型工具包,可用來建構原生 UI。它可在 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,也就是說,只需要說明 UI,Compose 即可為您完成其餘作業。這些 API 非常直觀,易於探索及使用:「我們的主題設定層變得更為直觀明瞭。我們可透過單一 Kotlin 檔案實現這些工作,而後者可以延伸至多個 XML 檔案,使檔案透過多層主題重疊進行屬性定義及指派。」(Twitter)

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

在 Compose 中,狀態是明確的可傳遞元件。如此一來,狀態 truth 只有一個單一資料來源,形成封裝及分離。之後,隨著應用程式狀態的變更,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。