前言
简要回顾下移动平台在小组件设计上的持续探索:
- 早期的Android版本缺乏美观,小组件更是常年未改。似乎除了天气、时钟等常用小组件以外鲜少使用,逐渐被人遗忘
Windows Phone
的动态磁贴在自由尺寸的Logo上灵活展示信息的设计非常超前,奈何生态构建困难,早已退场- Apple向来稳重(保守),直到
iOS 10
才引入小组件,但负一屏限制着它的发展。直到iOS 14
的全面支持才大获成功,大有后来居上的态势 - VIVO紧随其后重磅推出的
OriginOS
则将Logo和小组件完美融合,试图一统磁贴和小组件的概念,非常值得称赞
也许是受到了友商们的持续刺激,Google终于开始重新审视小组件这个元老级功能,并在Android 12
里进行了重新设计、重新出发。
下面将结合代码实战,带领大家逐步感受Android 12里小组件的各项新特性和对应的适配方法。
1. 选择和展示的统一变化
事实上即使未做任何适配,在12上直接运行的小组件与11就有明显不同,主要表现在选择器和展示的效果。
以Chrome和Youtube Music的小组件为例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zOiZEC9C-1651208948175)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6638b542d3d048a68ce8303af236ed33~tplv-k3u1fbpfcp-zoom-1.image)]
可以看到12上的一些变化:
- 选择器
- 顶部悬浮搜索框,可以更加快速地找到目标小组件
- 小组件按照App自动折叠,避免无关的小组件占用屏幕空间
- App标题还对包含的小组件数目进行了提示
- 拖拽到桌面上之后小组件默认拥有圆角设计
11上的小组件选择器不支持搜索而且无法折叠,拖拽到桌面上也是初始的直角效果。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hyk51fDa-1651208948176)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab5e1d6116664032bc03c6ee51fbedbc~tplv-k3u1fbpfcp-zoom-1.image)]
2. 美观的圆角设计
健康信息越发重要,手撸一个展示今日步数的小组件,搭配androidplot
框架展示详细的步数图表。
override fun onUpdate(…) {
for (appWidgetId in appWidgetIds) {
showBarChartToWidget(context, appWidgetManager, appWidgetId)
}
}
private fun showBarChartToWidget(…) {
// Create plot view.
val plot = XYPlot(context, “Pedometers chart”)
…
// Set graph shape
plot.setBorderStyle(Plot.BorderStyle.ROUNDED, 12f, 12f)
plot.isDrawingCacheEnabled = true
// Reflect chart’s bitmap to widget.
val bmp = plot.drawingCache
val remoteViews = RemoteViews(context.packageName, R.layout.widget_pedometer)
remoteViews.setBitmap(R.id.bar_chart, “setImageBitmap”, bmp)
appWidgetManager.updateAppWidget(appWidgetId, remoteViews)
}
不用特别适配,直接运行到12上,就能有圆角效果。