作者 / 開發者關係工程師 Marcel Pintó Biescas,@marxallski
Android 12 改進 了一項被許多 Android 使用者視為關鍵的功能 - App Widgets,改進後的 Widgets 更加實用、美觀,且更易於被使用者發現 (84% 的使用者至少使用一個 Widgets)。現在,我們釋出了 Jetpack Glance 的第一個 Alpha 版,讓 Widgets 的構建過程變得更加輕鬆,該版本是建立在 Jetpack Compose 執行時 (Runtime) 之上的新框架,旨在實現更快、更輕鬆的為主螢幕或其他介面構建 App Widgets。
歡迎您開始嘗試並 分享反饋意見。
Glance 提供了新式宣告性 Kotlin API,其類似於您在 Jetpack Compose 中使用的 API,能夠幫助您用更少的程式碼構建更美觀的自適應 App Widgets。
△ Glance "Hello World" Widgets 示例
class GreetingsWidget(private val name: String): GlanceAppWidget() {
@Composable
override fun Content() {
Text(text = "Hello $name")
}
}
class GreetingsWidgetReceiver : GlanceAppWidgetReceiver() {
override val glanceAppWidget = GreetingsWidget("Glance")
}
工作原理
Glance 提供了可組合項的基礎元件集,助您打造 "一目瞭然" 的體驗。現在,我們將提供更多的 App Widgets。Glance 利用 Jetpack Compose 執行時 (Runtime),可以將 可組合項 轉化為實際的 RemoteViews,並在 App Widgets 中顯示。
△ Glance 結構示意圖
這意味著 Glance 需要 啟用 Compose,且依賴於執行時 (Runtime)、圖形 (Graphics) 和單元介面 Compose 層,但它與其他現有的 Jetpack Compose 介面元素之間不具備直接互操作性。但是,您可以分享應用中的狀態或任何其他邏輯,以此來打造一目瞭然的介面。
Alpha 版介紹
此初始版本引入了主要的 API,不僅能夠實現與現有 RemoteViews 之間的互操作性,還能幫助您構建 App Widgets。
以下是該開發庫提供的內容概覽:
- 通過 GlanceAppWidget 和 GlanceAppWidgetReceiver 宣告您的 App Widgets。
- 利用 Glance 可組合項的初始集組合您的介面: Box、Row、Column、Text、Button、LazyColumn、Image、Spacer。
- 利用 GlanceModifier 方法將修飾符應用於可組合項。
利用預定義的 Action 處理使用者互動:
- 通過 ActionParameters 為 Action 提供引數。
- 通過定義 SizeMode.Single、SizeMode.Exact 或 SizeMode.Responsive 來處理 不同的 Widgets 佈局。
- 提供 GlanceStateDefinition,以保留 GlanceAppWidget 狀態。
- 提供本地組合,例如 LocalContext、LocalState、LocalGlanceId、LocalSize。
- 通過 AndroidRemoteViews 可組合項實現與您現有 RemoteViews 之間的互操作。
我們還將推出更多功能,例如預設主題,更完善的 Android Studio 支援等等。敬請期待 新版本。
注意: 雖然 SDK 的最低版本是 21,但 Alpha 版目前支援相容的最低版本為 SDK v23。
可以檢視 在 Android 12 中構建新式 Android App Widgets 視訊瞭解更多詳細資訊。
Glance 使用入門
您可以在 GitHub 上檢視 示例,以便快速入門。也可以在最新的 穩定版 Android Studio 中使用 Glance,但首先需要按照 Jetpack Compose 文件 中的步驟進行設定,因為 Glance 依賴於 Compose 執行時 (Runtime)。
此外,您還可以檢視 AndroidX 程式碼庫中的進階示例。
編寫您自己的外掛,您可以擴充套件 Android Gradle Plugin 並根據您的專案需求自定義您的構建!
Alpha 版本是您參與開發 API 的重要機會,因此,歡迎 分享您的反饋,幫助我們瞭解並進一步提升您的體驗!也歡迎您持續關注我們瞭解更多最新內容。
期待您的體驗!
歡迎您 點選這裡 向我們提交反饋,或分享您喜歡的內容、發現的問題。您的反饋對我們非常重要,感謝您的支援!