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多线程和队列管理shell程序
Aug 04 Python
python中OrderedDict的使用方法详解
May 05 Python
Python实现购物程序思路及代码
Jul 24 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
Python使用functools实现注解同步方法
Feb 06 Python
关于python写入文件自动换行的问题
Jun 23 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
Python eval的常见错误封装及利用原理详解
Mar 26 Python
django表单的Widgets使用详解
Jul 22 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
python 实现全球IP归属地查询工具
Dec 18 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
神族 PROTOSS 概述
2020/03/14 星际争霸
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
js tab 选项卡
2009/04/26 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
js验证账户名是否重复
2020/05/26 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
详解numpy1.19.4与python3.9版本冲突解决
2020/12/15 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
40岁生日感言
2014/02/15 职场文书
工作推荐信范文
2014/05/10 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
销售人员工作自我评价
2014/09/21 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
python实现会员管理系统
2022/03/18 Python