鸿蒙实况窗 (Live View) 实战:仿 iOS“灵动岛”效果,实时显示外卖/打车进度

🌟 前言:为什么它是“用户体验”的神?

传统的通知是“一次性”的:“骑手已接单”-> 划掉 ->“骑手已送达”-> 划掉。
用户想看中间的进度,必须解锁手机 -> 打开 App -> 等待加载 -> 查看地图。

实况窗的逻辑是“伴随”:
任务开始,它出现;任务进行中,它实时更新(剩余 500米 -> 300米 -> 100米);任务结束,它自动消失。

它有两种核心形态:

  1. 胶囊态 (Capsule):位于状态栏左上角,显示极简信息(如:图标 + 时间)。
  2. 卡片态 (Card):在通知中心或锁屏界面,显示详细信息(如:地图、司机电话、车牌)。

🏗️ 一、 架构原理:从后台到前台

实况窗本质上是一种特殊的Form (卡片)。它的生命周期由后台服务驱动。

数据流转图 (Mermaid):

锁屏卡片状态栏胶囊实况窗管理器 (System)你的 App (后台 Service)锁屏卡片状态栏胶囊实况窗管理器 (System)你的 App (后台 Service)携带初始数据: {status: "接单", time: "5min"}{status: "赶往中", distance: "300m"}loop[任务进行中]1. 创建实况窗 (Create)渲染胶囊 UI渲染卡片 UI2. 更新数据 (Update)刷新刷新3. 结束任务 (End)移除移除

🛠️ 二、 核心实战:编写 ArkTS UI

实况窗的 UI 代码写在EntryFormAbility对应的 Widget 页面中。
关键在于:一套代码,适配两种形态。我们需要判断ohos.extra.param.key.form_dimension或者是自定义的布局类型。

1. 定义数据结构
classRideInfo{status:string;// "已接单", "行程中"plate:string;// 车牌号 "苏A·88888"time:string;// "3 分钟"icon:Resource;}
2. 编写响应式布局 (LiveViewCard.ets)

鸿蒙提供了LiveView专用组件布局结构。

@Entry@Componentstruct LiveViewCard{// 接收外部更新的数据@LocalStorageProp('status')status:string='等待接单';@LocalStorageProp('time')time:string='--';// 自动判断当前是胶囊还是卡片@StorageProp('formDimension')formDimension:number=0;build(){// 根容器RelativeContainer(){// --- 形态 1: 胶囊态 (状态栏左上角) ---// 只有在胶囊模式下显示if(this.isCapsule()){Row(){Image($r('app.media.car_icon')).width(18).height(18).margin({right:4})Text(this.time).fontSize(14).fontColor(Color.White)}.backgroundColor('#007DFF').borderRadius(20).padding({left:8,right:8,top:2,bottom:2})}// --- 形态 2: 卡片态 (锁屏/通知中心) ---// 只有在卡片模式下显示if(this.isCard()){Column(){// 标题栏Row(){Text('正在前往').fontSize(16).fontWeight(FontWeight.Bold)Blank()Text(this.time).fontSize(20).fontColor('#007DFF')}.width('100%')// 详细信息Row(){Text(`车牌: 苏A·88888`).fontSize(14).fontColor('#666')Text(this.status).fontSize(14).fontColor('#333')}.width('100%').margin({top:10})// 进度条Progress({value:60,total:100,type:ProgressType.Linear}).color('#007DFF').width('100%').margin({top:15})}.padding(15).backgroundColor(Color.White).borderRadius(16)}}}isCapsule():boolean{// 这里的判断逻辑需参考官方文档的 dimension 枚举returnthis.formDimension===2;// 假设 2 代表胶囊}isCard():boolean{returnthis.formDimension===3;// 假设 3 代表卡片}}

📡 三、 逻辑驱动:后台更新数据

UI 写好了,怎么让它动起来?
我们需要在后台服务(ServiceExtensionAbility)或者主进程中调用notificationManagerformProvider

注意:实况窗通常归类为Notification (通知)的一种特殊类型 (LiveView)。

importnotificationManagerfrom'@ohos.notificationManager';// 1. 创建实况窗 (Publish)asyncfunctionstartLiveView(){letnotificationRequest={id:1001,content:{contentType:notificationManager.ContentType.NOTIFICATION_CONTENT_LIVE_VIEW,liveView:{status:notificationManager.LiveViewStatus.LIVE_VIEW_STATUS_UPDATE,// 这里关联你的 UI Ability 和初始数据extraInfo:{"status":"司机已出发","time":"5 分钟"}}},// 设为常驻,用户无法划掉,直到任务结束isOngoing:true,isUnremovable:true};awaitnotificationManager.publish(notificationRequest);}// 2. 实时更新 (Update)// 比如每隔 10秒 调用一次asyncfunctionupdateProgress(timeLeft:string){letrequest={id:1001,// ID 必须一致content:{contentType:notificationManager.ContentType.NOTIFICATION_CONTENT_LIVE_VIEW,liveView:{status:notificationManager.LiveViewStatus.LIVE_VIEW_STATUS_UPDATE,extraInfo:{"status":"即将到达","time":timeLeft}}}};awaitnotificationManager.publish(request);}// 3. 结束实况窗 (End)asyncfunctionendLiveView(){// 发送结束状态,系统会自动做收尾动画// 或者直接 cancelawaitnotificationManager.cancel(1001);}

🎨 四、 交互细节:灵动的核心

要让实况窗看起来“高级”,必须处理好Transitions (状态流转)

  1. 颜色语义
  • 蓝色:进行中(如:司机赶往中)。
  • 绿色:已完成/到达(如:司机已到达)。
  • 红色:异常/警告(如:订单超时)。
  1. 点击跳转
    实况窗被点击时,应该直接跳转到 App 的详情页(如地图页),而不是首页。
    notificationRequest中配置wantAgent实现跳转。
  2. 动画过渡
    鸿蒙系统自动处理了从“胶囊”展开为“卡片”的动画,但你需要确保两个布局的数据是对应的,这样视觉上才不会突兀。

🎯 总结

实况窗是鸿蒙Next版本中最具辨识度的特性之一。
它打破了 App 的边界,将服务延伸到了 System UI 中。

对于打车、外卖、航班、比赛比分这类“长时效、强关注”的业务场景,实况窗不是“锦上添花”,而是“必选项”

Next Step:
在模拟器中运行上面的代码,点击“开始接单”按钮。观察状态栏左上角是否出现了一个蓝色的小图标。尝试下拉通知栏,看它是否平滑地展开成了一张详细的卡片。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1140177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qwen3-VL跨平台方案:Windows/Mac/Linux全支持,云端运行

Qwen3-VL跨平台方案:Windows/Mac/Linux全支持,云端运行 引言 想象一下这样的场景:你的开发团队里有使用Windows的程序员、钟爱Mac的设计师和坚持Linux的算法工程师。当你们共同开发一个需要视觉理解能力的AI项目时,每个人都得在…

大模型学习宝典:从Transformer到高效微调的系统化知识手册

文章推荐了一份系统全面的大模型知识手册,分为四个难度递进部分:第一部分涵盖CNN、Transformer、GPT等基础知识;第二部分介绍微调优化与LoRA等技术;第三部分讲解分布式训练方法;第四部分深入高效微调实战。该手册从基础…

AI智能实体侦测服务颜色标注逻辑揭秘:三色高亮原理详解

AI智能实体侦测服务颜色标注逻辑揭秘:三色高亮原理详解 1. 技术背景与问题提出 在信息爆炸的时代,非结构化文本数据(如新闻、社交媒体内容、文档资料)呈指数级增长。如何从这些杂乱无章的文字中快速提取出有价值的信息&#xff…

HY-MT1.5-1.8B嵌入式设备部署:Jetson平台适配实战记录

HY-MT1.5-1.8B嵌入式设备部署:Jetson平台适配实战记录 1. 引言:为何选择HY-MT1.5-1.8B在边缘端部署? 随着多语言交流需求的快速增长,高质量、低延迟的实时翻译系统成为智能硬件、移动应用和边缘计算场景的核心能力之一。腾讯开源…

AI智能实体侦测服务国际化准备:中英文混合文本识别挑战

AI智能实体侦测服务国际化准备:中英文混合文本识别挑战 1. 引言:迈向全球化的AI实体识别 1.1 技术背景与业务需求 随着全球化信息流的加速,跨语言内容处理已成为自然语言处理(NLP)领域的重要课题。AI 智能实体侦测服…

Hunyuan HY-MT1.5部署教程:3步完成GPU算力适配,支持33语种互译

Hunyuan HY-MT1.5部署教程:3步完成GPU算力适配,支持33语种互译 1. 引言 随着全球化进程加速,高质量、低延迟的多语言互译需求日益增长。传统云翻译服务虽成熟,但在数据隐私、响应速度和定制化方面存在局限。腾讯开源的Hunyuan H…

HY-MT1.5如何支持方言翻译?上下文学习部署实战指南

HY-MT1.5如何支持方言翻译?上下文学习部署实战指南 1. 引言:腾讯开源的混元翻译大模型HY-MT1.5 随着全球化进程加速,跨语言沟通需求日益增长,传统翻译模型在面对多语言互译、混合语种表达、方言变体处理等复杂场景时逐渐暴露出局…

CA6140溜板箱加工工艺及工装设计

2 零件分析 2.1产品分析 如图2.1所示:此图是机床工作时的工作简图,电动机提供动力,通过皮带轮带动传递给床头箱,床头箱控制主轴的转动,主轴转动带动工件做旋转运动,同时床头箱通过丝杠、光杠将动力传给溜板…

全网最全8个AI论文工具,专科生轻松搞定毕业论文!

全网最全8个AI论文工具,专科生轻松搞定毕业论文! AI 工具如何成为专科生论文写作的得力助手 在当今信息爆炸的时代,AI 技术已经渗透到各个领域,学术写作也不例外。对于专科生来说,撰写一篇高质量的毕业论文不仅是学业的…

AI智能实体侦测服务显存不足?CPU适配优化部署教程来解决

AI智能实体侦测服务显存不足?CPU适配优化部署教程来解决 1. 背景与痛点:AI智能实体侦测服务的资源瓶颈 在自然语言处理(NLP)的实际应用中,命名实体识别(Named Entity Recognition, NER) 是信息…

DeepSeek-NER vs RaNER实战对比:信息抽取速度与精度全面评测

DeepSeek-NER vs RaNER实战对比:信息抽取速度与精度全面评测 1. 引言:为何需要高质量的中文命名实体识别? 在自然语言处理(NLP)领域,命名实体识别(Named Entity Recognition, NER)…

法律文书信息提取实战:AI智能实体侦测服务精准识别当事人信息

法律文书信息提取实战:AI智能实体侦测服务精准识别当事人信息 1. 引言:法律文书处理的智能化转型 在司法、合规与法律科技(LegalTech)领域,非结构化文本的高效处理一直是核心挑战。一份典型的法律文书中往往包含大量…

大模型智能体vs工作流:彻底理解Agent的运行时机制与工作流的设计时逻辑

本文深入探讨了大模型智能体与工作流的本质差异。智能体是一种运行时机制,具有概率性和自主性,通过ReAct循环实现自我纠错;而工作流是设计时确定的逻辑,采用DAG结构处理确定性任务。真正的智能体平台应关注能力的语义化封装和状态…

元宵节公众号互动怎么玩?基于 SVG 的 8 种交互方案拆解

在公众号节日运营中,元宵节一直是一个非常适合做互动的节点。 相比单向阅读的长图,带有解谜、翻转、抽签、拼图特性的 SVG 交互图文,更容易提升停留时长与参与感。本文结合多个品牌实践案例,总结了 8 种适合元宵节场景的 SVG 交互…

HY-MT1.5-1.8B模型剪枝实验:进一步压缩体积可行性分析

HY-MT1.5-1.8B模型剪枝实验:进一步压缩体积可行性分析 近年来,随着大模型在机器翻译领域的广泛应用,如何在保证翻译质量的前提下降低模型体积、提升推理效率,成为边缘计算和实时应用场景中的关键挑战。腾讯开源的混元翻译模型 HY…

Hunyuan-HY-MT1.5实战案例:企业多语种客服系统搭建详细步骤

Hunyuan-HY-MT1.5实战案例:企业多语种客服系统搭建详细步骤 随着全球化业务的不断扩展,企业对高效、精准的多语言客服系统需求日益增长。传统商业翻译API虽然稳定,但在定制化、数据隐私和成本控制方面存在局限。腾讯开源的混元翻译大模型 HY…

AI出海必备趋势分析:HY-MT1.5开源翻译模型多场景落地实战

AI出海必备趋势分析:HY-MT1.5开源翻译模型多场景落地实战 1. 引言:AI出海浪潮下的翻译技术新范式 随着全球化进程加速,AI出海已成为中国科技企业拓展国际市场的重要战略。在跨语言沟通需求激增的背景下,高质量、低延迟、可定制的…

混元模型1.5技术解析:解释性翻译优化原理

混元模型1.5技术解析:解释性翻译优化原理 1. 技术背景与问题提出 随着全球化进程的加速,跨语言交流需求日益增长,传统机器翻译系统在面对复杂语境、混合语言表达以及专业术语场景时,往往表现出理解偏差、上下文断裂和格式错乱等…

腾讯HY-MT1.5翻译模型:高可用架构设计方案

腾讯HY-MT1.5翻译模型:高可用架构设计方案 随着全球化进程加速,高质量、低延迟的机器翻译需求日益增长。传统云中心化翻译服务在隐私保护、网络依赖和响应速度方面面临挑战,尤其在跨境通信、智能终端和边缘计算场景中表现受限。为此&#xf…

全球大模型第一股智谱华章上市,GLM-4.7登顶双榜,中国AGI迎来资本时代!

智谱华章(02513.HK)成为全球首家以AGI基座模型为核心业务的上市公司,被誉为"中国的OpenAI"。公司GLM-4.7模型在开源与国产模型榜单双料第一,累计研发投入44亿元。作为国内最大独立大模型厂商,其MaaS平台已服…