
Android 11 / R 上自家的短信息应用 Messages , 又如FaceBook的 Messager以及Telegram 应用等等。它们实现了Bubble气泡,也都属于聊天讯息功能应用
本文介绍 Android 11 / R DP1 Bubble 气泡
上一次写气泡是 Android Q ,本节内容我们来看看 Android 11 / R 上的气泡又有哪些变化 ?
- Notification.BubbleMetadata.Builder 差异报告
添加方法 |
---|
Builder createIntentBubble (PendingIntent, Icon) |
Builder createShortcutBubble (String) |
变更方法 | 状态 |
---|---|
Builder setIcon (Icon) | Now deprecated. |
Builder setIntent (PendingIntent) | Now deprecated. |
- Notification.BubbleMetadata 差异报告
添加方法 |
---|
Icon getBubbleIcon () |
PendingIntent getBubbleIntent () |
String getShortcutId () |
变更方法 | 状态 |
---|---|
Icon getIcon () | Now deprecated. |
PendingInten getIntent() | Now deprecated. |
前言
我们先来看看,默认Android 短信应用的气泡效果,当通知栏收到一条短信通知
[长按] 这条通知 , 能看到有show as Bubble ,favorite 、Smooze、Mute 等选项
然后 [ 点击 show as Bubble ] 通知栏的消息会作为Bubble气泡显示,悬浮在屏幕上
当 [ 点击 ] 悬浮气泡 ,气泡会被展开,触发BubbleActivity , 查看完整的对话或者发生新对话内容
[ 长按 ] 气泡拖到底部 移除
这就是Android 11 / R 上的气泡效果,那么,接下来就来实现这样的气泡效果
示例
首先创建一个BubbleActivity
用于展示气泡展开后的窗口布局
[ BubbleActivity.kt ]
1 | class BubbleActivity : AppCompatActivity() { |
[ activity_bubble.xml ]
1 | <LinearLayout |
[ style.xml ]
1 | <style name="AppTheme.NoActionBar"> |
[ AndroidManifest.xml ]
1 | <activity android:name=".BubbleActivity" |
创建一个Notification公共类
[ MyNotification.kt ]
1 | package com.shoewann.androidrtest |
MainActivity 调用
[MainActivity.kt]
1 | val canBubble = MyNotification(this).canBubble() |
效果图
气泡什么时候会出现?
官方文档 为了减少用户的打扰次数,只有满足以下一个或多个条件,气泡才会出现:
- 通知使用 MessagingStyle,并且有一个 Person 被添加
- 该通知来自对 Service.startForeground 的调用,有一个CATEGORY_CALL 的 类别,并且有一个 Person 被添加
- 发送通知时,应用程序处于前台。
本示例只演示了以上第一个类别,其他情况请自行验证
以上就是本文的全部内容,感谢您的阅读
本文基于Android R DP1 , 如有不足,欢迎指正