
Android 12 Widgets 改良
https://developer.android.谷歌.cn/about/versions/12/features/widgets
App Widgets
https://developer.android.谷歌.cn/guide/topics/appwidgets/overview
Jetpack Glance
https://developer.android.谷歌.cn/jetpack/androidx/releases/glance
Jetpack Compose 运转时 (Runtime)
https://developer.android.谷歌.cn/jetpack/androidx/releases/compose-runtime
接待您起头测验考试并 反应定见:
https://issuetracker.谷歌.com/issues/new?component=1097239&template=1611667
Glance 供给了新式声明性 Kotlin API,其近似于您正在 Jetpack Compose 中利用的 API,可以或许帮忙您用更少的代码构建更美妙的自顺应 App Widgets。
https://developer.android.谷歌.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.谷歌.cn/reference/kotlin/androidx/compose/runtime/Composable
RemoteViews
https://developer.android.谷歌.cn/reference/android/widget/RemoteViews
那意味着 Glance 需求启用 Compose,且依靠于运转时 (Runtime)、图形 (Graphics) 和单位界面 Compose 层,但它与其他现有的 Jetpack Compose 界面元素之间不具有间接互操纵性。可是,您能够 利用中的状况或任何其他逻辑,以此来打造了如指掌的界面。
启用 Compose
https://developer.android.谷歌.cn/jetpack/compose/interop/adding#anchor
Compose 层
https://developer.android.谷歌.cn/jetpack/compose/layering
Alpha 版先容
此初始版本引进了首要的 API,不但可以或许实现与现有 RemoteViews 之间的互操纵性,还能帮忙您构建 App Widgets。
以下是该开辟库供给的内容概览:
经由过程 GlanceAppWidget 和 GlanceAppWidgetReceiver 声明您的 App Widgets。
GlanceAppWidget
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/GlanceAppWidget
GlanceAppWidgetReceiver
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/GlanceAppWidgetReceiver
操纵 Glance 可组合项的初始集组合您的界面: Box、Row、Column、Text、Button、LazyColumn、Image、Spacer。
Box、Row、Column、Spacer
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/layout/package-summary#top-level-functions
Text
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/text/package-summary#text
Button
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/package-summary#button
LazyColumn
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/lazy/package-summary#lazycolumn
Image
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/package-summary#image
操纵 GlanceModifier 方式将润色符利用于可组合项:
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/GlanceModifier.html
操纵预界说的 Action 处置用户交互:
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/action/package-summary
actionStartActivity
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartactivity
actionRunCallback
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionruncallback
actionStartService
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartservice
actionStartBroadcastReceiver
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/action/package-summary#actionstartbroadcastreceiver
经由过程 ActionParameters 为 Action 供给参数:
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/action/ActionParameters
经由过程界说 SizeMode.Single、SizeMode.Exact 或 SizeMode.Responsive 来处置分歧的 Widgets 结构。
SizeMode.Single
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Single
SizeMode.Exact
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Exact
SizeMode.Responsive
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/SizeMode.Responsive
分歧的 Widgets 结构
https://developer.android.谷歌.cn/guide/topics/appwidgets/layouts
供给 GlanceStateDefinition,以保存 GlanceAppWidget 状况。
GlanceStateDefinition
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/state/GlanceStateDefinition.html
GlanceAppWidget
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/state/package-summary
供给当地组合,比方 LocalContext、LocalState、LocalGlanceId、LocalSize:
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/package-summary#top-level-properties
经由过程 AndroidRemoteViews 可组合项实现与您现有 RemoteViews 之间的互操纵。
AndroidRemoteViews
https://developer.android.谷歌.cn/reference/kotlin/androidx/glance/appwidget/package-summary#androidremoteviews
RemoteViews
https://developer.android.谷歌.cn/reference/android/widget/RemoteViews.html
我们还将推出更多功用,比方默许主题,更完美的 Android Studio 撑持等等。敬请等候新版本:
https://developer.android.谷歌.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 Studio
https://developer.android.谷歌.cn/studio
Jetpack Compose 文档
https://developer.android.谷歌.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.kt
https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:glance/glance-appwidget/integration-tests/demos/src/main/java/androidx/glance/appwidget/demos/ResponsiveAppWidget.kt
版权声明:本文为原创文章,版权归 头条123 所有,欢迎 本文,转载请保留出处!