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笔记(2)
Oct 24 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
Apr 28 Python
Python从MP3文件获取id3的方法
Jun 15 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
详解Python静态网页爬取获取高清壁纸
Apr 23 Python
python实现微信防撤回神器
Apr 29 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
python使用Thread的setDaemon启动后台线程教程
Apr 25 Python
python实现canny边缘检测
Sep 14 Python
Python Selenium库的基本使用教程
Jan 04 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开发者事半功倍的十大技巧小结
2010/04/20 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
JS高级笔记
2011/07/13 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
React Native中的RefreshContorl下拉刷新使用
2017/10/09 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
Django的性能优化实现解析
2019/07/30 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Python class的继承方法代码实例
2020/02/14 Python
学python需要去培训机构吗
2020/07/01 Python
Python调用Redis的示例代码
2020/11/24 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
技校毕业生的自我评价
2013/12/27 职场文书
职工运动会邀请函
2014/01/19 职场文书
新闻传播专业求职信
2014/07/22 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
离职报告范文
2014/11/04 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书