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 相关文章推荐
python中split方法用法分析
Apr 17 Python
Python命令启动Web服务器实例详解
Feb 23 Python
python事件驱动event实现详解
Nov 21 Python
python 列表递归求和、计数、求最大元素的实例
Nov 28 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Python 数据科学 Matplotlib图库详解
Jul 07 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
晶体管来复再生式二管收音机
2021/03/02 无线电
微信API接口大全
2015/04/15 PHP
php实现数据库的增删改查
2017/02/26 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
实例讲解python中的协程
2018/10/08 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
python实现简单银行管理系统
2019/10/25 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python对XML文件的操作实现代码
2020/03/27 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
请介绍一下Ant
2016/07/22 面试题
入党积极分子介绍信
2014/01/17 职场文书
区三好学生主要事迹
2014/01/30 职场文书
大学生标准自荐书
2014/06/15 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
海洋天堂观后感
2015/06/05 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
JavaScript执行机制详细介绍
2021/12/06 Javascript
Linux中各个目录的作用与内容
2022/06/28 Servers