Android Q之气泡弹窗的实现示例


Posted in Python onJune 23, 2020

在Android Q中,用户可以借助气泡,轻松地在设备上任何位置进行多任务处理。气泡内置于“通知”系统中,它会浮动在其他应用的上层,并会跟随用户的移动而移动到屏幕的任何位置,用于取代SYSTEM_ALERT_WINDOW。气泡可以展开显示应用功能和信息,并在不使用时折叠起来。当设备处于已锁定状态或始终保持活动状态,气泡会像通知那样显示。气泡弹窗效果如下图:

Android Q之气泡弹窗的实现示例

一、气泡配置信息 

气泡是一种可以选择停用的功能,在应用显示第一个气泡时,系统会弹出权限对话框,提供两种选项:

  • 屏蔽来自您的应用的所有气泡 - 通知不会被屏蔽,但永远不会显示为气泡;
  • 允许来自您的应用的所有气泡 - 通过 BubbleMetaData 发送的所有通知都会显示为气泡;

气泡是通过Notification API创建的。我们如果要让通知显示气泡效果,需要添加一些配置信息。因为气泡的展开视图是根据选择的Activity来创建的,此Activity需要经过配置才能显示为气泡。此Activity必须是可以调整大小、嵌入式的,并始终可以在文档模式界面下启动。如下代码是气泡Activity的配置:

<activity
   android:name=".BubbleActivity"
   android:theme="@style/AppTheme.NoActionBar"
   android:label="@string/title_activity_bubble"
   android:allowEmbedded="true"
   android:documentLaunchMode="always"
   android:resizeableActivity="true"
  />

二、发送气泡 

要发送气泡,需要执行如下步骤:

  • 按照一般步骤创建通知;
  • 调用 Notification.BubbleMetadata.Builder 以创建 BubbleMetadata 对象;
  • 使用 setBubbleMetadata 将元数据添加到通知;

发送气泡的实例代码如下:

// 创建气泡intent
  Intent target = new Intent(mContext, BubbleActivity.class);
  PendingIntent bubbleIntent =
    PendingIntent.getActivity(mContext, 0, target, 0 /* flags */);
 
  // 创建气泡元数据
  Notification.BubbleMetadata bubbleData =
    new 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();
 
  // 创建通知
  Person chatBot = new Person.Builder()
      .setBot(true)
      .setName("BubbleBot")
      .setImportant(true)
      .build();
 
  Notification.Builder builder =
    new Notification.Builder(mContext, CHANNEL_ID)
      .setContentIntent(contentIntent)
      .setSmallIcon(smallIcon)
      .setBubbleMetadata(bubbleData);

三、创建展开的气泡

我们可以将气泡配置为自动展开显示,可以使用以下方法来设置用于启用这些行为的标记:setAutoExpandBubble()和setSuppressInitialNotification()。

Java实例代码如下:

Notification.BubbleMetadata bubbleData =
        new Notification.BubbleMetadata.Builder()
            .setDesiredHeight(600)
            .setIntent(bubbleIntent)
            .setAutoExpandBubble(true)
            .setSuppressInitialNotification(true)
            .build();

kotlin实例代码如下:

val bubbleMetadata = Notification.BubbleMetadata.Builder()
    .setDesiredHeight(600)
    .setIntent(bubbleIntent)
    .setAutoExpandBubble(true)
    .setSuppressInitialNotification(true)
    .build()

到此这篇关于Android Q之气泡弹窗的实现示例的文章就介绍到这了,更多相关AndroidQ 气泡弹窗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3中的2to3转换工具使用示例
Jun 12 Python
Python的Django框架安装全攻略
Jul 15 Python
Python的Django框架中的表单处理示例
Jul 17 Python
Python列表切片用法示例
Apr 19 Python
Python书单 不将就
Jul 11 Python
python贪吃蛇游戏代码
Apr 18 Python
Python变量类型知识点总结
Feb 18 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
有关Tensorflow梯度下降常用的优化方法分享
Feb 04 Python
python数字类型math库原理解析
Mar 02 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 #Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 #Python
python如何查看安装了的模块
Jun 23 #Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 #Python
Python dict的常用方法示例代码
Jun 23 #Python
Python3 webservice接口测试代码详解
Jun 23 #Python
python和JavaScript哪个容易上手
Jun 23 #Python
You might like
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
js 内存释放问题
2010/04/25 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
onkeydown事件解决按回车键直接提交数据的需求
2013/04/11 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
Vue学习笔记进阶篇之多元素及多组件过渡
2017/07/19 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
vuex的简单使用教程
2018/02/02 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
通过Python实现自动填写调查问卷
2017/09/06 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
python读取Kafka实例
2019/12/23 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
python圣诞树编写实例详解
2020/02/13 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
新年抽奖获奖感言
2014/03/02 职场文书
合作协议书范本
2014/04/17 职场文书
园林系毕业生求职信
2014/06/23 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书