前言
几乎我们所有人都使用过 Facebook Messenger 应用程序。除了消息功能之外,它还有一个非常酷的功能,称为Bubbles。因此,每当有消息进入我们的收件箱时,Bubble 就会在屏幕上显示为消息通知。最好的部分是只需按下气泡即可启动活动。例如,在 Facebook Messenger 应用程序中,当您按下 Bubble 时,消息屏幕将打开,您可以使用此消息屏幕发送消息。下面是一个来自 Google Developers Android 网站的气泡示例:
在您的 Android 应用程序中添加 Bubble 功能是一个非常酷的想法,但过程非常困难和复杂。因此,为了简化此过程并为用户提供更一致的体验,在 Android Q 的 Beta 预览版中添加了 Bubbles 功能。因此,通过使用 Bubble API,您可以在现有的其他应用程序之上运行您的应用程序在移动设备中。
在这篇文章中,我们将学习如何在我们的 Android 应用程序中使用 Bubbles。那么,让我们开始吧。
什么是气泡?
Bubbles 是 Android Q 中的一项新预览功能,可帮助您执行多个任务或从移动设备的任何部分使用多个应用程序。例如,如果您正在使用 Gmail 应用程序,并且在某个特定时刻,一条消息进入了您的 Facebook Messenger 应用程序,那么此时,您会在屏幕上看到一个气泡,您可以将该气泡调整为移动屏幕,最好的部分是通过点击气泡,您可以打开 Facebook Messenger 应用程序并正常使用它。
想一想,如果您正在使用 Youtube 应用程序,一段时间后,您开始使用 Gmail 应用程序,然后过了一段时间,您开始使用其他应用程序。那么,如果您想一直看到应用程序的通知怎么办?您必须定期打开该应用程序,或者您必须保持该应用程序处于打开状态。
但是通过在您的应用程序中使用 Bubbles,您可以始终拥有一个应用程序。无论您使用哪个应用程序,Bubble 都会出现在所有应用程序之上。
气泡是使用通知 API 创建的。因此,使用 Bubble 就像在应用程序中使用通知一样简单。如果你想冒泡你的通知,那么你必须在通知中添加一些额外的数据。
实施气泡的先决条件
在您的应用程序中实现 Bubbles 之前,您必须具备以下条件:
- Android Studio 3.5 预览版:要获得 Android Studio 3.5 预览版,请访问Android Studio网站并下载预览版。
- Android Q 预览版 SDK:要安装适用于 Android Q 的预览版 SDK,请按照以下步骤操作:
- 在 Android Studio 中,单击工具 > SDK 管理器。
- 在SDK Platforms选项卡中,选择Android Q Preview。
- 在SDK Tools选项卡中,选择Android SDK Build-Tools 28(或更高版本)。
- 单击确定开始安装。
之后,将您的 compileSdkVersion 和 targetSdkVersion 更改为 29
android {
compileSdkVersion 29
defaultConfig {
targetSdkVersion 29
}
...
}
- 具有 Android Q Beta 的设备或具有 Android Q Beta 的模拟器(运行您的应用程序)
气泡的实现
如果你想从 Bubble 打开一个活动,那么你必须在AndroidManifest.xml文件中定义它:
<activity
android:name=".bubbles.BubbleActivity"
android:theme="@style/AppTheme.NoActionBar"
android:label="@string/title_activity_bubble"
android:allowEmbedded="true"
android:documentLaunchMode="always"
android:resizeableActivity="true"/>
如果要显示多个相同类型的气泡,则必须将documentLaunchMode设置为“always”。
现在,我们的BubbleActivtiy添加了 Bubble,即BubbleActivity将从 Bubble 中启动。
注意:Bubble 启动的 Activity 与正常 Activity 的生命周期相同。
现在,让我们继续讨论 Kotlin 部分。您必须做的第一步是为 Bubble 制定意图:
// Create bubble intent
val target = Intent(context, BubbleActivity::class.java)
val bubbleIntent = PendingIntent.getActivity(context, 0, target, 0 /* flags */)
创建意图后,根据您的需要创建之前创建的通知:
// Create notification
val chatBot = Person.Builder()
.setBot(true)
.setName("BubbleBot")
.setImportant(true)
.build()
现在,为了在您的移动屏幕上显示 Bubble,您必须添加一些BubbleMetaData并将其与之前创建的意图连接:
// Create bubble metadata
val bubbleData = Notification.BubbleMetadata.Builder()
.setDesiredHeight(600)
// Note: although you can set the icon is not displayed in Q Beta 2
.setIcon(Icon.createWithResource(context, R.drawable.icon))
.setIntent(bubbleIntent)
.build()
默认情况下,您需要点击气泡来展开气泡的内容或启动与气泡关联的活动。但是如果你想让你的 Bubble 自动打开,那么你必须将setAutoExpandBubble的值设置为true。例如:
val bubbleMetadata = Notification.BubbleMetadata.Builder()
.setDesiredHeight(600)
.setIntent(bubbleIntent)
.setAutoExpandBubble(true)
.setSuppressInitialNotification(true)
.build()
现在,在设计完 Bubble 的观感并将 Bubble 与 Intent 连接之后,我们下一步就是将通知与 Bubble 连接起来,这样,每当有通知到来时,Bubble 就会打开。
val builder = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setBubbleMetadata(bubbleData)
.addPerson(chatBot
何时使用气泡?
在每种情况下都使用气泡不是一个好习惯。您应该通过考虑某些事情来使用 Bubbles:
- 如果要使用 Bubble 发送的通知非常重要,或者用户选择使用 Bubbles 进行通知。
- 您应该确保气泡也应该像正常通知一样工作,因为用户可以禁用气泡的功能,在这种情况下,您必须以正常方式显示您的通知。
- 使用 Bubble 时,请确保使用该 Bubble 执行的操作非常少。
结论
在这篇文章中,我们看到了 Android Q 的一项很酷的功能,即 Bubbles。我们学习了如何在应用程序中使用气泡来显示应用程序的通知。最后,我们还看到了使用 Bubbles 时应牢记的要点。