close

作者 / 開發者關係工程師 Marcel Pintó Biescas,@marxallski

Android 12 改進了一項被許多 Android 用戶視為關鍵的功能 - App Widgets,改進後的 Widgets 更加實用、美觀,且更易於被用戶發現 (84% 的用戶至少使用一個 Widgets)。現在,我們發布了 Jetpack Glance 的第一個 Alpha 版,讓Widgets的構建過程變得更加輕鬆,該版本是建立在 Jetpack Compose 運行時 (Runtime) 之上的新框架,旨在實現更快、更輕鬆的為主屏幕或其他界面構建 App Widgets。

Android 12 Widgets改進https://developer.android.google.cn/about/versions/12/features/widgets

App Widgetshttps://developer.android.google.cn/guide/topics/appwidgets/overview

Jetpack Glancehttps://developer.android.google.cn/jetpack/androidx/releases/glance

Jetpack Compose 運行時 (Runtime)https://developer.android.google.cn/jetpack/androidx/releases/compose-runtime


歡迎您開始嘗試並分享反饋意見:
https://issuetracker.google.com/issues/new?component=1097239&template=1611667

Glance 提供了新式聲明性 Kotlin API,其類似於您在 Jetpack Compose 中使用的 API,能夠幫助您用更少的代碼構建更美觀的自適應 App Widgets。
https://developer.android.google.cn/jetpack/compose

△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結構示意圖

可組合項https://developer.android.google.cn/reference/kotlin/androidx/compose/runtime/Composable

RemoteViewshttps://developer.android.google.cn/reference/android/widget/RemoteViews


這意味着 Glance 需要啟用 Compose,且依賴於運行時 (Runtime)、圖形 (Graphics) 和單元界面 Compose 層,但它與其他現有的 Jetpack Compose 界面元素之間不具備直接互操作性。但是,您可以分享應用中的狀態或任何其他邏輯,以此來打造一目了然的界面。


啟用 Composehttps://developer.android.google.cn/jetpack/compose/interop/adding#anchor
Compose 層https://developer.android.google.cn/jetpack/compose/layering

Alpha 版介紹



此初始版本引入了主要的 API,不僅能夠實現與現有 RemoteViews 之間的互操作性,還能幫助您構建 App Widgets。

以下是該開發庫提供的內容概覽:

通過 GlanceAppWidget 和 GlanceAppWidgetReceiver 聲明您的 App Widgets。

GlanceAppWidgethttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/GlanceAppWidget
GlanceAppWidgetReceiverhttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiver

利用 Glance 可組合項的初始集組合您的界面: Box、Row、Column、Text、Button、LazyColumn、Image、Spacer。

Box、Row、Column、Spacerhttps://developer.android.google.cn/reference/kotlin/androidx/glance/layout/package-summary#top-level-functions
Texthttps://developer.android.google.cn/reference/kotlin/androidx/glance/text/package-summary#text
Buttonhttps://developer.android.google.cn/reference/kotlin/androidx/glance/package-summary#button
LazyColumnhttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/lazy/package-summary#lazycolumn
Imagehttps://developer.android.google.cn/reference/kotlin/androidx/glance/package-summary#image

利用 GlanceModifier 方法將修飾符應用於可組合項:

https://developer.android.google.cn/reference/kotlin/androidx/glance/GlanceModifier.html

利用預定義的 Action 處理用戶交互:

https://developer.android.google.cn/reference/kotlin/androidx/glance/action/package-summary

actionStartActivity

https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartactivity

actionRunCallback
https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionruncallback
actionStartService
https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartservice
actionStartBroadcastReceiver

https://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartbroadcastreceiver


通過 ActionParameters 為 Action 提供參數:

https://developer.android.google.cn/reference/kotlin/androidx/glance/action/ActionParameters

通過定義 SizeMode.Single、SizeMode.Exact 或 SizeMode.Responsive 來處理不同的 Widgets 布局。
SizeMode.Singlehttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Single
SizeMode.Exacthttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Exact
SizeMode.Responsivehttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Responsive
不同的 Widgets 布局https://developer.android.google.cn/guide/topics/appwidgets/layouts

提供 GlanceStateDefinition,以保留 GlanceAppWidget 狀態。

GlanceStateDefinitionhttps://developer.android.google.cn/reference/kotlin/androidx/glance/state/GlanceStateDefinition.html

GlanceAppWidgethttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/state/package-summary


提供本地組合,例如 LocalContext、LocalState、LocalGlanceId、LocalSize:
https://developer.android.google.cn/reference/kotlin/androidx/glance/package-summary#top-level-properties

通過 AndroidRemoteViews 可組合項實現與您現有 RemoteViews 之間的互操作。

AndroidRemoteViewshttps://developer.android.google.cn/reference/kotlin/androidx/glance/appwidget/package-summary#androidremoteviews
RemoteViewshttps://developer.android.google.cn/reference/android/widget/RemoteViews.html

我們還將推出更多功能,例如默認主題,更完善的 Android Studio 支持等等。敬請期待新版本:

https://developer.android.google.cn/jetpack/androidx/releases/glance

注意:雖然 SDK 的最低版本是 21,但 Alpha 版目前支持兼容的最低版本為 SDK v23。

△在 Android 12 中構建新式 Android App Widgets


Glance 使用入門




您可以在 GitHub 上查看示例,以便快速入門。也可以在最新的穩定版 Android Studio 中使用 Glance,但首先需要按照 Jetpack Compose 文檔中的步驟進行設置,因為 Glance 依賴於 Compose 運行時 (Runtime)。

示例https://github.com/android/user-interface-samples/tree/glance/AppWidget/glance-widget

穩定版 Android Studiohttps://developer.android.google.cn/studio

Jetpack Compose 文檔https://developer.android.google.cn/jetpack/compose/interop/adding#setup

此外,您還可以查看 AndroidX 代碼庫中的進階示例:

https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/


編寫您自己的插件,您可以擴展 Android Gradle Plugin 並根據您的項目需求自定義您的構建!
△ResponsiveAppWidget.kt 演示
ResponsiveAppWidget.kthttps://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ResponsiveAppWidget.kt

Alpha 版本是您參與開發 API 的重要機會,因此,歡迎分享您的反饋,幫助我們了解並進一步提升您的體驗!也歡迎您持續關注 "Android 開發者" 微信公眾號了解更多最新內容。

分享您的反饋https://issuetracker.google.com/issues/new?component=1097239&template=1611667


期待您的體驗!

您也可以通過下方二維碼向我們提交反饋,或分享您喜歡的內容、發現的問題。您的反饋對我們非常重要,感謝您的支持!


推薦閱讀



如頁面未加載,請刷新重試


點擊屏末|閱讀原文|即刻了解App Widgets 更多內容

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()