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实现的登陆Discuz!论坛通用代码分享
Jul 11 Python
解密Python中的描述符(descriptor)
Jun 03 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
windows 下python+numpy安装实用教程
Dec 23 Python
一道python走迷宫算法题
Jan 22 Python
Python 查看文件的读写权限方法
Jan 23 Python
python机器学习之随机森林(七)
Mar 26 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
django框架模板语言使用方法详解
Jul 18 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
Python基于callable函数检测对象是否可被调用
Oct 16 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
phpfans留言版用到的install.php
2007/01/04 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
javascript 实现 原路返回
2015/01/21 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
Web Uploader文件上传插件使用详解
2016/05/10 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
Python切片索引用法示例
2018/05/15 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
python将字符串转换成json的方法小结
2019/07/09 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
python 通过手机号识别出对应的微信性别(实例代码)
2019/12/22 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
美国保健品专家:Life Extension
2018/05/04 全球购物
工厂厂长岗位职责
2013/11/08 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
入股协议书范本
2014/11/01 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
西安事变观后感
2015/06/12 职场文书