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采用socket模拟TCP通讯的实现方法
Nov 19 Python
python通过索引遍历列表的方法
May 04 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
python 并发编程 非阻塞IO模型原理解析
Aug 20 Python
wxpython绘制音频效果
Nov 18 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
Python sqlite3查询操作过程解析
Feb 20 Python
python中如何打包用户自定义模块
Sep 23 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通用分页类page.php[仿google分页]
2008/08/31 PHP
php读取html并截取字符串的简单代码
2009/11/30 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
javascript 实现map集合
2015/04/03 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
详解如何运行vue项目
2019/04/15 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python装饰器decorator介绍
2014/11/21 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
波兰在线运动商店:YesSport
2020/07/23 全球购物
2014年党支部承诺书
2014/05/30 职场文书
法定代表人授权委托书
2014/09/19 职场文书
讲座新闻稿
2015/07/18 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
TensorFlow的自动求导原理分析
2021/05/26 Python