Android Q之气泡弹窗的实现示例

 更新时间:2020年06月23日 10:57:54   作者:徐福记456  
这篇文章主要介绍了Android Q之气泡弹窗的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Android Q中,用户可以借助气泡,轻松地在设备上任何位置进行多任务处理。气泡内置于“通知”系统中,它会浮动在其他应用的上层,并会跟随用户的移动而移动到屏幕的任何位置,用于取代SYSTEM_ALERT_WINDOW。气泡可以展开显示应用功能和信息,并在不使用时折叠起来。当设备处于已锁定状态或始终保持活动状态,气泡会像通知那样显示。气泡弹窗效果如下图:

一、气泡配置信息 

气泡是一种可以选择停用的功能,在应用显示第一个气泡时,系统会弹出权限对话框,提供两种选项:

  • 屏蔽来自您的应用的所有气泡 - 通知不会被屏蔽,但永远不会显示为气泡;
  • 允许来自您的应用的所有气泡 - 通过 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"
  />

二、发送气泡 

要发送气泡,需要执行如下步骤:

发送气泡的实例代码如下:

// 创建气泡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、java等哪一门编程语言适合人工智能?

    python、java等哪一门编程语言适合人工智能?

    哪一门编程语言适合人工智能?这篇文章主要为大家详细介绍了python编程语言适合人工智能的原因、优点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • pycharm命令终端运行python文件以及传递参数方式

    pycharm命令终端运行python文件以及传递参数方式

    这篇文章主要介绍了pycharm命令终端运行python文件以及传递参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python进阶-函数默认参数(详解)

    Python进阶-函数默认参数(详解)

    下面小编就为大家带来一篇Python进阶-函数默认参数(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • python数据可视化plt库实例详解

    python数据可视化plt库实例详解

    这篇文章主要介绍了python可视化数据plt库实例,下面使用pycharm环境给大家详细介绍,文中提到jupyter和pycharm环境的差别,需要的朋友可以参考下
    2021-06-06
  • 在 Python 中使用 MQTT的方法

    在 Python 中使用 MQTT的方法

    这篇文章主要介绍了在 Python 中使用 MQTT的方法,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Swin Transformer模块集成到YOLOv5目标检测算法中实现

    Swin Transformer模块集成到YOLOv5目标检测算法中实现

    这篇文章主要为大家介绍了Swin Transformer模块集成到YOLOv5目标检测算法中实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Python Numpy中数据的常用保存与读取方法

    Python Numpy中数据的常用保存与读取方法

    这篇文章主要介绍了Python Numpy中数据的常用保存与读取方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • django自定义Field实现一个字段存储以逗号分隔的字符串

    django自定义Field实现一个字段存储以逗号分隔的字符串

    这篇文章主要介绍了django自定义Field实现一个字段存储以逗号分隔的字符串的示例,需要的朋友可以参考下
    2014-04-04
  • Django之路由层的实现

    Django之路由层的实现

    这篇文章主要介绍了Django之路由层的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python超细致探究面向对象

    Python超细致探究面向对象

    面向对象编程是一种编程方式,此编程方式的落地需要使用“类”和 “对象”来实现,所以,面向对象编程其实就是对 “类”和“对象” 的使用,今天给大家介绍下python 面向对象开发及基本特征,感兴趣的朋友一起看看吧
    2022-06-06

最新评论