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的Django框架中用流响应生成CSV文件的教程
May 02 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
Python : turtle色彩控制实例详解
Jan 19 Python
Python爬取365好书中小说代码实例
Feb 28 Python
python3.7+selenium模拟淘宝登录功能的实现
May 26 Python
python3中apply函数和lambda函数的使用详解
Feb 28 Python
Python尝试实现蒙特卡罗模拟期权定价
Apr 21 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 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
JS 验证码功能的三种实现方式
2018/11/26 Javascript
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Python 元类实例解析
2018/04/04 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python实现随机漫步算法
2018/08/27 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Python 互换字典的键值对实例
2019/02/12 Python
python实现Virginia无密钥解密
2019/03/20 Python
深入了解Python enumerate和zip
2020/07/16 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
制作部班长职位说明书
2014/02/26 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
年终工作总结范文2014
2014/11/27 职场文书
父亲节活动总结
2015/02/12 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
redis 存储对象的方法对比分析
2021/08/02 Redis