為什麼大廠開始全面轉向Compose?

語言: CN / TW / HK

縱觀Android發展至今,十餘年間Google一直在針對不同的主題對它進行整改補強,其目的就是為了給開發者們一個更加舒適高效的開發平台,更好地 實現各種功能。

然而在 UI構建 方面,最初的那一套UI體系基本還是沿用至今,基本沒有什麼改變。就現在的發展趨勢來説,傳統的UI架構讓很多開發者表示苦不堪言:UI的構建需要 大量的代碼 ,寫個自定義View需要實現測量、佈局,響應用户行為需要滿篇的Listener事件,與此同時,還得配合上XML自定義屬性,可以説是 繁瑣至極 。而且從現有的代碼體量來説,優化重構基本是天方夜譚。

Compose應運而生

無法優化重構,那麼就只能創造新的架構來進行開發。自Flutter之後,Google也是正式發佈了Compose1.0。早在1.0版本正式發佈之前,很多大廠就已經在用Compose進行UI的編寫了,並且都對這個新貴讚不絕口:

很多人可能都會有疑問:有了Flutter,為什麼還要推出Compose,這不是 自己打臉嗎 (其實主要是也學不過來了)?

雖然同為聲明式UI,二者雖然比較相似,但究其根本定位還是不盡相同:

Flutter: 作為一款專為跨平台而生的框架,從上到下都透露着大膽和創新,選擇Dart已經是膽大包天,在Web平台支持選用Canvaskit 的WebAssembly 模式更是足夠冒進,很多人難以接受他的任性

Flutter架構圖(圖片來自網絡)

Compose: Compose則是一個全新的UI庫,隸屬Jetpack中的一員,它的出現是為了重新定義Android UI的開發方式,相比原生Android UI的開發方式,它大幅度提高了原生UI的開發效率:

  • 聲明式UI ,不需要手動刷新數據

  • 去掉XML ,完全解除了混合寫法(xml+Java、kotlin)的侷限性

  • 超強兼容性 ,大多數常用庫(如Navigation、ViewModel和Kotlin協程)都適用於Compose,Compose 能夠與現有 View 體系並存,你可以為一個既有項目引入 Compose

  • 加速開發 ,為我們提供了很多開箱即用的Material 組件,如果的APP是使用的material設計的話,那麼使用Jetpack Compose 能讓你節省不少精力。

  • 精簡代碼數量 ,減少bug的出現

  • 功能完備 ,可以完全覆蓋Android現有視圖系統的所有能力

  • 實時預覽 ,Compose 預覽機制可以做到與真機無異,真正的所見所即得

相比之下,二者的區別一目瞭然:如果想做一個多端跨平台開發者,那麼Flutter會讓你如虎添翼;想要繼續紮根Android深耕細作,那麼 Compose 更適合作為你學習的第一選擇。

但是對於大部分開發者來説,Compose確實是一套比較難學的東西, 它是一個完整的、全新的框架: 渲染機制、佈局機制、觸摸算法以及 UI 的具體寫法,全都是新的 拋棄了我們寫了 N 年的 View 和 ViewGroup 那一套東西。 但是想要讓自己跟上時代,成為真正的技術人員,對於這種可以 提高生產力 的技術,則一定要儘可能掌握它,不能抱有任何藉口。

為了幫助大家更好地理解Compose這個新技術風口,早日跟上時代潮流,這裏給大家介紹一份谷歌大佬強勢分享 《Jetpack Compose-從入門到精通》,手把手帶大家領略Compose的風采。

掃碼即可領取

這份資料旨在給希望瞭解、學習、應用Android Jetpack Compose的小夥伴一個參考資料:

第一章 初識Jetpack Compoese

1. 為什麼我們需要一個新的UI 工具?

2. Jetpack Compose的着重點 

加速開發

強大的UI工具

直觀的Kotlin API

3. API 設計 

4. Compose API 的原則 

一切都是函數

頂層函數(Top-level function)

組合優於繼承

信任單一來源

5. 深入瞭解Compose 

Core

Foundation

Material

6. 插槽API

第二章 Jetpack Compose構建Android UI

1. Android Jetpack Compose 最全上手指南

Jetpack Compose 環境準備和Hello World

佈局

使用Material design 設計

Compose 佈局實時預覽

……

2. 深入詳解 Jetpack Compose | 優化 UI 構建

Compose 所解決的問題

Composable 函數剖析

聲明式 UI

組合 vs 繼承

封裝

重組

……

3. 深入詳解 Jetpack Compose | 實現原理

@Composable 註解意味着什麼?

執行模式

Positional Memoization (位置記憶化)

存儲參數

重組

……

第三章 Jetpack Compose實戰演練

1. Jetpack Compose應用1

開始前的準備

創建DEMO

遇到的問題

2. Jetpack Compose應用2

3. Jetpack Compose應用做一個倒計時器

數據結構

倒計時功能

狀態模式

Compose 佈局

繪製時鐘

4. 用Jetpack Compose寫一個玩安卓App

準備工作

引入依賴

新建 Activity

創建 Compose

PlayTheme

畫頁面

底部導航欄

管理狀態

添加頁面

5. 用Compose Android 寫一個天氣應用

開篇

畫頁面

畫背景

畫內容

……

6. 用Compose快速打造一個“電影App”

成品

實現方案

實戰

不足

……

想要全方位系統學習瞭解Compose, 那麼這份《Jetpack Compose-從入門到精通》你一定不要錯過。

掃碼即可領取