android - 现代 Android 小部件开发
问题描述
现在是 2020 年,在 iOS 终于添加了对 Widget 的支持之后,Widget 再次风靡一时。但是,自 2012 年以来,Android 小部件似乎没有更新。
来自Android 文档:
RemoteViews 对象(以及相应的 App Widget)可以支持以下布局类:
- 框架布局
- 线性布局
- 相对布局
- 网格布局
这意味着,没有 ConstraintLayout,没有 RecyclerView,没有 AndroidX。我不想回到 ListView 的黑暗日子。
Android 开发者网站上的文档真的仍然是当今开发 Android Widget 的最佳实践吗?有没有人有在 AndroidX 世界中制作小部件的经验?是否有任何类型的 3rd 方 API 可以让体验不那么痛苦?
解决方案
但是,自 2012 年以来,Android 小部件似乎没有更新。
正确的。
我不想回到 ListView 的黑暗日子。
嗯……对不起?
Android 开发者网站上的文档真的仍然是当今开发 Android Widget 的最佳实践吗?
应用程序小部件不是关于“最佳实践”,而是更多关于记录和支持的协议。请记住,应用程序小部件实际上是一种进程间通信 (IPC) 协议,它恰好最终会产生一个 UI。您的应用程序没有呈现 UI — 主屏幕或其他应用程序小部件主机通常在AppWidgetHost
相关 API 的帮助下。
这意味着,没有 ConstraintLayout,没有 RecyclerView,没有 AndroidX。
正确的。毕竟,您不知道主屏幕是否可以访问这些内容,或者它们的版本等。
是否有任何类型的 3rd 方 API 可以让体验不那么痛苦?
那是不可能的。您的应用与应用小部件几乎没有关系。“繁重的工作”在框架中,在较小程度上是在主屏幕中。第三方 API 无法真正改变这一点。
我期待谷歌开始引导启动器开发人员开始支持切片作为“应用程序小部件”的替代形式。这还没有发生,因为谷歌似乎已经忘记了切片。也许,在未来,谷歌会提供基于Android 11 的SurfaceControlViewHost
东西,这为各种可能性打开了大门。在这两种情况下,它可能需要启动器开发人员进行更改以支持这些东西,这将减慢采用速度。
除了在有限的小部件和容器列表中提供 UI 之外,您可以做的最接近的事情是将您自己的东西呈现到 aBitmap
并ImageView
在应用小部件中的 an 中显示。这变得很棘手,因为您不知道应用小部件的精确大小。当然,这不会改变输入选项。
推荐阅读
- vba - 如何在 word 中管理活动文档引用以保存和关闭我新创建的输出?
- react-native - 用于管理工作流的 Expo-payments-stripe 的 ETA
- javascript - 工作 SQL 在 pg-promise 中产生语法错误
- c# - 有没有一种方法可以轻松地将网格绑定到 Xamarin 中的表格,就像在我的 WinForms 代码中一样?
- javascript - 如何让事件监听器在单击按钮之前不监听?
- php - 转换后的 Laravel 工作查询参数 1 在转换后通过
- javascript - UseEffect 只触发某些部分?
- php - Wordpress - Wocomerce 存档页面在标题前显示品牌
- javascript - Electron - preload.js 未加载并且在 Windows 10 上发生错误
- python - np.dot(): TypeError: for-loop 中 *: 'float' 和 'NoneType' 不支持的操作数类型