
本节内容测试Android Q新功能 —— 气泡
当前文章首次编辑于Android Q Beta 2 版本,可能部分内容会在后期版本上发生变化,仅供参考
气泡是Android Q中的一项新功能。通过气泡,用户可以轻松地从设备上的任何位置进行多任务处理。 气泡内置于通知系统中。 它们会浮动在其他应用内容之上,并随时随地关注用户。 可以扩展气泡以显示应用程序功能和信息,并且可以在不使用时折叠。
当设备被锁定或始终显示处于活动状态时,气泡就会像通常那样出现。
气泡是一种选择退出功能。 当应用程序显示其第一个气泡时,会显示一个权限对话框,提供两个选项:
1.阻止您应用中的所有气泡 - 通知不会被阻止,但它们永远不会显示为气泡
2.允许来自您应用的所有气泡 - 使用
BubbleMetaData
发送的所有通知都将显示为气泡
Bubble API
气泡是通过通知API创建的,您可以像往常一样发送通知。如果你想让它冒泡,你需要附加一些额外的数据到它。
气泡的展开视图是由您选择的Activity创建的。需要将Activity配置为适当显示为气泡。该Activity必须可调整大小、嵌入并始终以文档UI模式启动。如果它缺少这些要求中的任何一个,它将以通知的形式显示。
下面的代码演示了如何实现一个简单的气泡:
1 | <activity |
如果您的应用程序显示多个相同类型的气泡,比如多个联系人的聊天对话,则该活动必须能够启动多个实例。将documentLaunchMode设置为“always”。
要发送气泡,请遵循以下步骤:
1、像平常一样创建通知。
2、调用Notification.BubbleMetadata.Builder
创建一个BubbleMetadata对象。
3、使用setBubbleMetadata
将元数据添加到通知中。
1 | // Create bubble intent |
注意:第一次发送显示气泡的通知时,它必须位于IMPORTANCE_HIGH的通知通道中。这是因为气泡是由通知重要性管理器处理的。如果系统在用户有机会允许或阻止冒泡之前降低了通知的重要性,则通知将不会冒泡。
如果您的应用程序在发送气泡时位于前台,那么重要性将被忽略,并且您的气泡将始终显示(除非用户已经阻止了气泡或来自应用程序的通知)。
创建扩展的气泡
您可以配置气泡以自动将其呈现为展开状态。 我们建议仅在用户执行可能导致冒泡的操作时使用此功能,例如点按按钮以开始新聊天。 在这种情况下,抑制创建气泡时发送的初始通知也是有意义的。
您可以使用一些方法来设置启用这些行为的标志:setAutoExpandBubble()
和setSuppressInitialNotification
注意:虽然您可以在Android Q Beta 2中设置这些标志,但它们还没有任何效果。
1 | val bubbleMetadata = Notification.BubbleMetadata.Builder() |
最佳实践
1、气泡占据了屏幕空间,并覆盖了其他应用程序内容。只有在非常重要的情况下(比如正在进行的通信),或者用户明确要求某些内容使用冒泡时,才应该将通知作为冒泡发送。
2、注意,用户可以禁用气泡。在这种情况下,气泡通知显示为正常通知。您应该始终确保气泡通知与正常通知一样工作。
3、从气泡中启动的流程(如活动和对话框)出现在气泡容器中。这意味着一个气泡可以有一个任务堆栈。如果气泡中有很多功能或导航,事情就会变得复杂。我们建议保持功能尽可能的具体和轻量级。
测试示例
创建BubbleActivity,在AndroidManifest.xml添加如下代码
1 | <activity android:name=".BubbleActivity" |
其中AppTheme.NoActionBar主题代码
1 | <style name="AppTheme.NoActionBar"> |
在MainActivity中,定义NotificatioManager对象
1 | private var notificationManager: NotificationManager? = null |
并在onCreate方法初始化
1 | notificationManager = this@MainActivity.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager |
定义常量
1 | companion object { |
定义显示Bubble气泡的方法
1 | private fun showBubble() { |
在按钮的点击事件中调用showBubble
方法,触发通知,并显示气泡
通知栏出现通知消息,屏幕右侧显示出了气泡(气泡好像没有图标,上文中有提到,即使设置了也不会在Q Beta 2上显示)
下拉通知栏,可以看到创建的通知消息
长按快捷方式的效果
点击气泡,会触发打开BubbleActivity并弹出窗口,可以看到右上角两个图标,左下角一个,右下角一个
首先我们看看左下角的图标,点击了会弹出两个选项,一个添加应用快捷方式,另一个设置壁纸
点击第一个添加应用快捷方式,可以列出当前设备安装的应用
随机点了两个,一个微信,一个支付宝,添加进去。添加完成之后,从此处点击过去,就能直接打开跳转到指定的应用程序 (添加进去还没测试如何移除,试过了清除数据和重新安装都没效果)
点击右上角箭头的的图标可以直接进入 —— MainActivity
点击右上角的齿轮,可以跳转的该应用的通知的设置
点击具体的一条通知渠道后面的齿轮,可以详细的进入具体的通知渠道设置
然后气泡右下角的图标,类似于快捷launcher桌面,可以直接访问桌面的所有应用程序,点击也是直接打开跳转到指定的应用程序中
最后,长按气泡图标,拖拽到底部指定区域,可以销毁气泡
判断是否允许了气泡的方法
1 | fun canBubble(): Boolean { |
本文参考官方文档和官方示例简单总结,感谢您的阅读。如有不足,欢迎指正