在 Android 中实现气泡

前言

几乎我们所有人都使用过 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,请按照以下步骤操作:
  1. 在 Android Studio 中,单击工具 > SDK 管理器
  2. SDK Platforms选项卡中,选择Android Q Preview
  3. SDK Tools选项卡中,选择Android SDK Build-Tools 28(或更高版本)
  4. 单击确定开始安装。

之后,将您的 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 时应牢记的要点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 实现尖角气泡,可以使用 Shape Drawable 和 Layer List Drawable。 首先,创建一个 Shape Drawable 来绘制气泡的形状,设置一个圆角和一条尖角线段。这里是一个示例代码: ```xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@android:color/white" /> <corners android:radius="8dp" /> <stroke android:width="1dp" android:color="#CCCCCC" /> <padding android:left="8dp" android:top="8dp" android:right="8dp" android:bottom="16dp" /> <size android:width="120dp" android:height="56dp" /> <stroke android:width="2dp" android:color="#000000" /> <rotate android:fromDegrees="45" android:pivotX="50%" android:pivotY="-50%"> <shape android:shape="line"> <stroke android:width="2dp" android:color="#000000" /> <size android:width="16dp" android:height="16dp" /> </shape> </rotate> </shape> ``` 然后,把这个 Shape Drawable 放到一个 Layer List Drawable ,以便在气泡上方放置一些文本或图像。这里是一个示例代码: ```xml <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent" /> <size android:width="120dp" android:height="56dp" /> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/white" /> <corners android:radius="8dp" /> </shape> </item> <item android:gravity="top|center_horizontal"> <bitmap android:src="@drawable/ic_launcher" android:gravity="center" /> </item> </layer-list> ``` 最后,在布局文件使用这个 Layer List Drawable,设置气泡的位置和大小。这里是一个示例代码: ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/bubble" android:layout_alignParentRight="true" android:layout_marginRight="16dp" android:layout_marginTop="16dp" /> </RelativeLayout> ``` 运行应用程序,你会看到一个带有尖角的气泡在屏幕上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值