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获得时间的实例说明
Mar 25 Python
python计算一个序列的平均值的方法
Jul 11 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
Python如何使用神经网络进行简单文本分类
Feb 25 Python
python中的被动信息搜集
Apr 29 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+mysql一个名片库程序
2006/10/09 PHP
phpmyadmin的#1251问题
2006/11/25 PHP
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
python日志记录模块实例及改进
2017/02/12 Python
详解Python文件修改的两种方式
2019/08/22 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
《陶罐和铁罐》教学反思
2014/02/19 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
高中同学会活动方案
2014/08/14 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
教师节作文之小学四年级
2019/09/03 职场文书