当前位置: 首页 > article >正文

速学Android 16新功能:带有进度的通知类型

前言

在当前已公布的Android 16版本中新增了一系列的功能特性和API,如:

  • 动态壁纸的内容处理,提供新的 content API

  • 预测性返回更新,添加了finishAndRemoveTaskCallback()moveTaskToBackCallback等API

  • 健康数据共享更新,添加了ACTIVITY_INTENSITY新数据类型

  • 在 ApplicationStartInfo 中启动组件,添加了 getStartComponent(),用于区分触发启动的组件类型

  • 引入了以进度为中心的Notification.ProgressStyle类型通知,帮助用户顺畅地跟踪用户发起的端到端历程

  • ...

本次我们主要来看Notification.ProgressStyle这种新类型的通知。

什么是有进度的通知?

先来看一张官方的图片。

此时你可能冷嘲热讽:这不就是下载进度的样式吗?不早就有了吗?使用builder.setProgress两秒钟搞定。

不,builder.setProgress 只能设置一个数值,而Notification.ProgressStyle是通知中心新增的全新类型,功能也更加丰富。

我们可以用在共享车辆、导航、快递距离以及任务完成度等场景中,而之前如果想实现这种功能就只能通过自定义通知的View来解决。

通知模板

Notification.ProgressStyle通知类型模板如下图所示:

各参数含义如下图所示:

参数

定义

A

背景图标。一般为App图标

B

头部标题,一般为App名称

C

通知时间,一般为系统生成

D

通知标题

E

通知内容

F

进度条

G

操作按钮

我们还可以给进度条设置一个图标,如导航按钮或者小汽车图标,如下图所示:

代码实践

比如,我们现在创建一个带有进度的通知样式,代码如下所示:

var progressStyle = if (Build.VERSION.SDK_INT >= 36) {Notification.ProgressStyle().setStyledByProgress(false).setProgress(456).setProgressTrackerIcon(Icon.createWithResource(context, R.mipmap.care)).setProgressSegments(listOf(Notification.ProgressStyle.Segment(41).setColor(Color.BLACK),Notification.ProgressStyle.Segment(552).setColor(Color.YELLOW),Notification.ProgressStyle.Segment(253).setColor(Color.WHITE),Notification.ProgressStyle.Segment(94).setColor(Color.BLUE))).setProgressPoints(listOf(Notification.ProgressStyle.Point(60).setColor(Color.RED),Notification.ProgressStyle.Point(560).setColor(Color.GREEN)))

然后,我们使用这个progressStyle构建一个通知并发送。

progressStyle?.let {val builder: Notification.Builder =if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {Notification.Builder(context, "chat1").setSmallIcon(android.R.drawable.ic_dialog_info).setContentTitle("阿黄哥送外卖").setContentText("您的外卖正在配送中").setPriority(Notification.PRIORITY_DEFAULT)} else {TODO("VERSION.SDK_INT < O")}it.setBuilder(builder)notificationManager?.notify(3, it.build());
}

运行程序,效果如下图所示。

setProgressPoints用于构建线路中的点,如蓝色和红色的方块,setProgressSegments用于构建线路中的路线。

setProgress用于设置当前位置,当前位置会计算在点和路线的总距离内。如我们仅设置线路路线长度为500,当前位置为250,则图标会在中间位置。

代码如下所示:

Notification.ProgressStyle().setStyledByProgress(false).setProgress(250).setProgressTrackerIcon(Icon.createWithResource(context, R.mipmap.care)).setProgressSegments(listOf(Notification.ProgressStyle.Segment(250).setColor(Color.GREEN),Notification.ProgressStyle.Segment(250).setColor(Color.DKGRAY)))

运行程序如下图所示:

最后

有了这个功能,我们可以将导航以及自身的位置实时显示在通知栏中,并且可以通过设置不同的颜色来标记路程的拥堵情况。相信后续地图、外卖软件等会优先使用这个新功能。

而对Android开发者来说,距离送外卖又近了一步!

相关文章:

速学Android 16新功能:带有进度的通知类型

前言 在当前已公布的Android 16版本中新增了一系列的功能特性和API&#xff0c;如&#xff1a; 动态壁纸的内容处理&#xff0c;提供新的 content API 预测性返回更新&#xff0c;添加了finishAndRemoveTaskCallback() 和 moveTaskToBackCallback等API 健康数据共享更新&…...

微信小程序开发:微信小程序上线发布与后续维护

微信小程序上线发布与后续维护研究 摘要 微信小程序作为移动互联网的重要组成部分,其上线发布与后续维护是确保其稳定运行和持续优化的关键环节。本文从研究学者的角度出发,详细探讨了微信小程序的上线发布流程、后续维护策略以及数据分析与用户反馈处理的方法。通过结合实…...

深度学习基础--CNN经典网络之分组卷积与ResNext网络实验探究(pytorch复现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 ResNext是分组卷积的开始之作&#xff0c;这里本文将学习ResNext网络&#xff1b;本文复现了ResNext50神经网络&#xff0c;并用其进行了猴痘病分类实验…...

AutoGen深度解析:从核心架构到多智能体协作的完整指南

AutoGen是微软推出的一个革命性多智能体(Multi-Agent)框架&#xff0c;它通过模块化设计和灵活的对话机制&#xff0c;极大地简化了基于大型语言模型(LLM)的智能体系统开发。本文将深入剖析AutoGen的两个核心模块——core基础架构和agentchat多智能体对话系统&#xff0c;带您全…...

面向对象的需求分析与UML构造块详解

目录 前言1 面向对象的需求分析概述2 UML构造块概述3 UML事物详解3.1 结构事物&#xff08;Structural Things&#xff09;3.2 行为事物&#xff08;Behavioral Things&#xff09;3.3 分组事物&#xff08;Grouping Things&#xff09;3.4 解释事物&#xff08;Annotational T…...

计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比

计算机视觉色彩空间全解析&#xff1a;RGB、HSV与Lab的实战对比 一、前言二、RGB 色彩空间​2.1 RGB 色彩空间原理​2.1.1 基本概念​2.1.2 颜色混合机制​ 2.2 RGB 在计算机视觉中的应用​2.2.1 图像读取与显示​2.2.2 颜色识别​2.2.3 RGB 色彩空间的局限性​ 三、HSV 色彩空…...

使用Docker安装Gogs

1、拉取镜像 docker pull gogs/gogs 2、运行容器 # 创建/var/gogs目录 mkdir -p /var/gogs# 运行容器 # -d&#xff0c;后台运行 # -p&#xff0c;端口映射&#xff1a;(宿主机端口:容器端口)->(10022:22)和(10880:3000) # -v&#xff0c;数据卷映射&#xff1a;(宿主机目…...

【Web API系列】XMLHttpRequest API和Fetch API深入理解与应用指南

前言 在现代Web开发中&#xff0c;客户端与服务器之间的异步通信是构建动态应用的核心能力。无论是传统的AJAX技术&#xff08;基于XMLHttpRequest&#xff09;还是现代的Fetch API&#xff0c;它们都为实现这一目标提供了关键支持。本文将从底层原理、核心功能、代码实践到实…...

Spring Boot 自定义 Redis Starter 开发指南(附动态 TTL 实现)

一、功能概述 本 Starter 基于 Spring Boot 2.7 实现以下核心能力&#xff1a; Redis 增强&#xff1a;标准化 RedisTemplate 配置&#xff08;JSON 序列化 LocalDateTime 支持&#xff09;缓存扩展&#xff1a;支持 Cacheable(value “key#60s”) 语法动态设置 TTL配置集中…...

ESP32开发入门:基于VSCode+PlatformIO环境搭建指南

前言 ESP32作为一款功能强大的物联网开发芯片&#xff0c;结合PlatformIO这一现代化嵌入式开发平台&#xff0c;可以大幅提升开发效率。本文将详细介绍如何在VSCode中搭建ESP32开发环境&#xff0c;并分享实用开发技巧。 一、环境安装&#xff08;Windows/macOS/Linux&#xf…...

2025.4.13机器学习笔记:文献阅读

2025.4.13周报 题目信息摘要创新点网络架构实验结论不足以及展望 题目信息 题目&#xff1a; Physics-informed neural networks for inversion of river flow and geometry with shallow water model期刊&#xff1a; Physics of Fluids作者&#xff1a; Y. Ohara; D. Moteki…...

Quartz修仙指南:从定时任务萌新到调度大能的终极奥义

各位被Thread.sleep()和ScheduledExecutorService折磨的道友们&#xff01;今天要解锁的是Java界任务调度至尊法宝——Quartz&#xff01;这货能让你像玉皇大帝安排天庭日程一样&#xff0c;精确控制每个任务的执行时机&#xff01;准备好告别蹩脚的手动定时器了吗&#xff1f;…...

如何免费使用Meta Llama 4?

周六, Meta发布了全新开源的Llama 4系列模型。 架构介绍查看上篇文章。 作为开源模型,Llama 4存在一个重大限制——庞大的体积。该系列最小的Llama 4 Scout模型就拥有1090亿参数,如此庞大的规模根本无法在本地系统运行。 不过别担心!即使你没有GPU,我们也找到了通过网页…...

编程助手fitten code使用说明(超详细)(vscode)

这两年 AI 发展迅猛&#xff0c;作为开发人员&#xff0c;我们总是追求更快、更高效的工作方式&#xff0c;AI 的出现可以说改变了很多人的编程方式。 AI 对我们来说就是一个可靠的编程助手&#xff0c;给我们提供了实时的建议和解决方&#xff0c;无论是快速修复错误、提升代…...

Python自动化爬虫:Scrapy+APScheduler定时任务

在数据采集领域&#xff0c;定时爬取网页数据是一项常见需求。例如&#xff0c;新闻网站每日更新、电商价格监控、社交媒体舆情分析等场景&#xff0c;都需要定时执行爬虫任务。Python的Scrapy框架是强大的爬虫工具&#xff0c;而APScheduler则提供了灵活的任务调度功能。 一、…...

技术分享|iTOP-RK3588开发板Ubuntu20系统旋转屏幕方案

iTOP-3588开发板采用瑞芯微RK3588处理器&#xff0c;是全新一代AloT高端应用芯片&#xff0c;采用8nmLP制程&#xff0c;搭载八核64位CPU&#xff0c;四核Cortex-A76和四核Cortex-A55架构&#xff0c;主频高达2.4GHz。是一款可用于互联网设备和其它数字多媒体的高性能产品。 在…...

Java中的参数是值传递还是引用传递?

在java中&#xff0c; 参数传递只有值传递 ,不论是基本类型还是引用类型。 其中的区别在于&#xff1a; 基本数据类型&#xff08;如byte&#xff0c;short&#xff0c;int等&#xff09;&#xff1a;传递的参数是值的副本&#xff0c;即基本类型的数值本身。因此在方法中&am…...

3.3.1 spdlog异步日志

文章目录 3.3.1 spdlog异步日志1. spdlog1. 日志作用2 .同步日志和异步日志区别 2. spdlog是什么下载命令&#xff1a;2. spdlog为什么高效3. spdlog特征5. spdlog输出控制6. 处理流程7. 文件io8.问题 2. 如何创建logger3. 如何创建sink4. 如何自定义格式化5. 如何创建异步日志…...

SSRF漏洞公开报告分析

文章目录 1. SSRF | 获取元数据 | 账户接管2. AppStore | 版本上传表单 | Blind SSRF3. HOST SSRF一、为什么HOST修改不会影响正常访问二、案例 4. Turbonomic 的 终端节点 | SSRF 获取元密钥一、介绍二、漏洞分析 5. POST | Blind SSRF6. CVE-2024-40898利用 | SSRF 泄露 NTL…...

生物化学笔记:医学免疫学原理14 感染免疫 感染免疫的机制+病原体的免疫逃逸机制

感染免疫的基本概念 感染免疫的机制 病原体的免疫逃逸机制...

RocketMQ深度百科全书式解析

​一、核心架构与设计哲学​ ​1. 设计目标​ ​海量消息堆积​&#xff1a;单机支持百万级消息堆积&#xff0c;适合大数据场景&#xff08;如日志采集&#xff09;。​严格顺序性​&#xff1a;通过队列分区&#xff08;Queue&#xff09;和消费锁机制保证局部顺序。​事务…...

谈谈模板方法模式,模板方法模式的应用场景是什么?

一、模式核心理解 模板方法模式是一种​​行为设计模式​​&#xff0c;通过定义算法骨架并允许子类重写特定步骤来实现代码复用。 如同建筑图纸规定房屋结构&#xff0c;具体装修由业主决定&#xff0c;该模式适用于​​固定流程中需要灵活扩展​​的场景。 // 基础请求处理…...

电脑的usb端口电压会大于开发板需要的电压吗

电脑的USB端口电压通常不会大于开发板所需的电压&#xff0c;以下是详细解释&#xff1a; 1. USB端口电压标准 根据USB规范&#xff0c;USB接口的标称输出电压为5V。实际测量时&#xff0c;USB接口的输出电压会略有偏差&#xff0c;通常在4.75V到5.25V之间。USB 2.0和USB 3.0…...

DeepSeek-V3与DeepSeek-R1全面解析:从架构原理到实战应用

DeepSeek-V3与DeepSeek-R1全面解析&#xff1a;从架构原理到实战应用 DeepSeek作为中国人工智能领域的新锐力量&#xff0c;其推出的DeepSeek-V3和DeepSeek-R1系列模型在开源社区和商业应用中引起了广泛关注。本指南将系统介绍这两款模型的架构特点、安装部署方法以及实际应用…...

Java 基础(4)—Java 对象布局及偏向锁、轻量锁、重量锁介绍

一、Java 对象内存布局 1、对象内存布局 一个对象在 Java 底层布局&#xff08;右半部分是数组连续的地址空间&#xff09;&#xff0c;如下图示&#xff1a; 总共有三部分总成&#xff1a; 1. 对象头&#xff1a;储对象的元数据&#xff0c;如哈希码、GC 分代年龄、锁状态…...

Flink回撤流详解 代码实例

一、概念介绍 1. 回撤流的定义 在 Flink 中&#xff0c;回撤流主要出现在使用 Table API 或 SQL 进行聚合或更新操作时。对于那些结果并非单纯追加&#xff08;append-only&#xff09;的查询&#xff0c;Flink 会采用“回撤流”模式来表达更新。 回撤流的数据格式&#xff…...

Glowroot 是一个开源的 Java 应用性能监控(APM)工具,专为 低开销、易用性 设计,具体的应用及优势进行分析说明

Glowroot 是一个开源的 Java 应用性能监控(APM)工具,专为 低开销、易用性 设计,适用于开发和生产环境。它可以帮助你实时监控 Java 应用的性能指标(如响应时间、SQL 查询、JVM 状态等),无需复杂配置即可快速定位性能瓶颈。 1. 核心功能 功能说明请求性能分析记录 HTTP 请…...

台式电脑插入耳机没有声音或麦克风不管用

目录 一、如何确定插孔对应功能1.常见音频插孔颜色及功能2.如何确认电脑插孔?3.常见问题二、 解决方案1. 检查耳机连接和设备选择2. 检查音量设置和静音状态3. 更新或重新安装声卡驱动4. 检查默认音频格式5. 禁用音频增强功能6. 排查硬件问题7. 检查系统服务8. BIOS设置(可选…...

直播电商革命:东南亚市场的“人货场”重构方程式

一、人设经济3.0&#xff1a;从流量收割到情感基建 东南亚直播战场正经历从"叫卖式促销"到"沉浸式信任"的质变&#xff0c;新加坡市场成为最佳观察样本&#xff1a; 数据印证趋势&#xff1a;Shopee直播用户日均停留28分钟&#xff0c;超短视频平台&#…...

AI图像生成

要通过代码实现AI图像生成&#xff0c;可以使用深度学习框架如TensorFlow、PyTorch或GANs等技术。下面是一个简单的示例代码&#xff0c;演示如何使用GANs生成手写数字图像&#xff1a; import torch import torchvision import torchvision.transforms as transforms import …...