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函数参数的区别(必看篇)
May 29 Python
利用Python如何生成hash值示例详解
Dec 20 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
python实现三维拟合的方法
Dec 29 Python
使用pycharm在本地开发并实时同步到服务器
Aug 02 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
python如何使用腾讯云发送短信
Sep 17 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
Python装饰器详细介绍
Mar 25 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
python爬取51job中hr的邮箱
2016/05/14 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
python多线程同步实例教程
2019/08/11 Python
python实现按首字母分类查找功能
2019/10/31 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
招商专员岗位职责
2014/02/08 职场文书
班风学风建设方案
2014/05/06 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
导游词之岳阳楼
2019/09/25 职场文书
Python基础之元编程知识总结
2021/05/23 Python