news 2026/10/7 15:37:49

HarmonyOS 6.0实战:加油记录我的页 —— 爱车信息卡与负边距统计行组合技

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS 6.0实战:加油记录我的页 —— 爱车信息卡与负边距统计行组合技

HarmonyOS 6.0实战:加油记录我的页 —— 爱车信息卡与负边距统计行组合技

App 57「加油记录」我的页(ProfileTab),主题色#FF6B35活力橙。本页是车主"我的爱车"的个人中心——橙色渐变用户卡(🚗 64×64 半透明圆头像 + "我的爱车"18 号 Bold + "大众朗逸 · 沪A·88888")+负边距统计行(68 加油次数 / ¥28k 累计油费 / 38k 总里程,上移 24 悬浮)+四菜单列表(🚗 车辆档案 / 📋 加油历史 / ⏰ 保养提醒 / ⚙️ 设置,0.5 Divider 分隔)+底部版本号(加油记录 Version 1.0.0)。本篇基于57-fuel-log/entry/src/main/ets/pages/ProfileTab.ets(共 98 行)逐段拆解,附 4 张实机截图。

一、整体结构:四区"用户卡 + 统计 + 菜单 + 版本"布局

我的页是"爱车信息 + 数据统计 + 工具入口"的四区布局——4 个 @Builder 块:

build() { Column() { Scroll() { Column() { this.UserCard() this.StatRow() this.MenuList() this.About() } .width('100%') .padding({ bottom: D.pad + this.safeBottom + 20 }) } .layoutWeight(1).scrollBar(BarState.Off).align(Alignment.Top) } .width('100%').height('100%').backgroundColor(C.bg) }

4 块结构:

  1. UserCard— 橙色渐变用户卡(爱车身份 + 车型车牌)
  2. StatRow— 负边距三列统计行(次数/费用/里程)
  3. MenuList— 四工具菜单(档案/历史/提醒/设置)
  4. About— 底部版本信息

我的页是"爱车个人中心"——先亮身份(我的爱车 + 大众朗逸·沪A·88888)、再看统计(68 次/28k/38k)、最后进工具菜单。与 App 56 停车记录我的页结构一致,但身份是"车"而非"车主"(我的爱车 + 车型 + 车牌),菜单含"保养提醒"(车辆维护场景专属),体现"车辆管理"的产品定位。

项目源码开源:https://gitee.com/codenestFlow/HarmonyOSHub

二、UserCard:橙色渐变爱车卡

UserCard() { Row({ space: 14 }) { Row() { Text('🚗').fontSize(32) } .width(64).height(64).backgroundColor('#33FFFFFF').borderRadius(32).justifyContent(FlexAlign.Center) Column({ space: 5 }) { Text('我的爱车').fontSize(18).fontWeight(FontWeight.Bold).fontColor('#FFFFFF') Text('大众朗逸 · 沪A·88888').fontSize(12).fontColor('#FFFFFF').opacity(0.85) }.alignItems(HorizontalAlign.Start).layoutWeight(1) } .width('100%') .padding({ top: this.safeTop + 30, left: D.pad, right: D.pad, bottom: 44 }) .linearGradient({ angle: 135, colors: [[C.primary, 0.0], [C.accent, 1.0]] }) }

技术拆解:

  1. 橙色渐变背景:linearGradient({ angle: 135, colors: [[C.primary, 0.0], [C.accent, 1.0]] })——从#FF6B35渐变到#FFA078,与首页油耗卡同款渐变(活力橙主题统一)。
  2. 64×64 半透明圆头像:backgroundColor('#33FFFFFF')——白色 20% 透明圆角 32 头像底,🚗 32 号居中。"🚗"(汽车)即产品符号(与 Tab 图标对应)。
  3. 爱车身份 + 车型车牌副文案:18 号 Bold 白字"我的爱车"(昵称)+ 12 号 85% 白字"大众朗逸 · 沪A·88888"(车型 + 车牌)——"我的爱车"以车为名(区别于 App 56 的"车主小李"),车型(大众朗逸)+ 车牌(沪A·88888)是车辆档案的核心信息。
  4. 底部留白 44:bottom: 44+safeTop + 30——顶部避让、底部大留白(给负边距统计行让位),系列个人中心标准。

三、StatRow:负边距三列统计行

StatRow() { Row() { ForEach(this.stats, (s: StatItem) => { Column({ space: 4 }) { Text(s.value).fontSize(18).fontWeight(FontWeight.Bold).fontColor(C.text) Text(s.label).fontSize(11).fontColor(C.textDim) }.layoutWeight(1) }, (s: StatItem) => s.label) } .width('92%').padding({ top: 14, bottom: 14 }) .backgroundColor(C.card).borderRadius(D.rMd).border({ width: 1, color: C.stroke }).margin({ top: -24 }) }

技术拆解:

  1. 负边距悬浮:.margin({ top: -24 })——统计行上移 24 覆盖在渐变卡留白区(系列经典悬浮手法),"卡片叠卡"层次感。
  2. 三列均分:layoutWeight(1)三列——68(加油次数)/ ¥28k(累计油费)/ 38k(总里程),每列 18 号 Bold 数值 + 11 号淡灰标签。
  3. 数据一致性:68 次 = 累计加油次数、¥28k = 全部历史油费(约 28000 元)、38k = 累计行驶里程(约 38000 km)——三个累计口径(次数/金额/里程),与首页的"最近 3 次/本月"分层。

三列数据(15-19 行):

  • 68 加油次数(累计,全部历史加油)
  • ¥28k 累计油费(全部历史油费,约 28000 元)
  • 38k 总里程(累计行驶里程,约 38000 km)

四、MenuList:四工具菜单列表

MenuList() { Column() { ForEach(this.menus, (m: MenuItem, idx: number) => { Row({ space: 12 }) { Text(m.emoji).fontSize(18) Text(m.title).fontSize(14).fontColor(C.text).layoutWeight(1) Text('>').fontSize(14).fontColor(C.textDim) } .width('100%').padding({ left: 14, right: 14, top: 14, bottom: 14 }) .onClick(() => { promptAction.showToast({ message: m.title }); }) if (idx < this.menus.length - 1) { Divider().color(C.stroke).strokeWidth(0.5) } }, (m: MenuItem) => m.title) } .width('92%').margin({ top: 16 }).backgroundColor(C.card).borderRadius(D.rMd).border({ width: 1, color: C.stroke }) }

4 个菜单项(21-26 行):

  • 🚗 车辆档案 — 管理车辆信息(车型、车牌、油品)
  • 📋 加油历史 — 查看全部加油记录
  • ⏰ 保养提醒 — 设置保养周期与提醒
  • ⚙️ 设置 — 应用偏好配置

技术拆解:

  1. 左 emoji + 中标题 + 右箭头:18 号 emoji(🚗📋⏰⚙️)+ 14 号标题 +>箭头——标准列表行。
  2. 0.5 细 Divider:idx < length - 1判断后插入——最后一项不画线,整宽细线分隔。
  3. 整行点击:点击 Toast 菜单名——产品化后跳对应功能页(车辆档案 ↔ 用户卡车型车牌管理、加油历史 ↔ 首页完整记录列表)。
  4. "保养提醒"是车辆场景专属:⏰ 保养提醒菜单(设置保养里程/周期,到里程提醒保养)——其他应用没有"保养"概念,体现加油记录向"车辆管理"扩展的方向。

五、About:底部版本信息

About() { Column({ space: 4 }) { Text('加油记录').fontSize(12).fontColor(C.textDim) Text('Version 1.0.0').fontSize(11).fontColor(C.textDim).opacity(0.7) }.width('100%').margin({ top: 24 }) }

12 号淡灰"加油记录" + 11 号 70% 透明"Version 1.0.0"——应用名 + 版本号(与 AppScope/app.json5 的 versionName "1.0.0" 一致),个人中心标准收尾。

六、跨页数据自洽:个人中心的全局闭环

我的页与首页、加油、分析三页形成完整闭环:

  • 我的页"68 次"↔ 首页"3 条最近记录"——68 是累计加油次数、首页 3 条是最近记录,累计 vs 近期的时间分层。
  • 我的页"¥28k 累计油费"↔ 分析页"¥4668 半年"——半年 4668 是累计 28000 的一部分(最近 6 个月),半年统计 → 累计总量。
  • 我的页"38k 总里程"↔ 首页"12580 km"里程——38k 是累计里程、12580 是当前仪表里程(最近记录),累计 vs 当前口径。
  • 用户卡"大众朗逸 · 沪A·88888"↔ 菜单"车辆档案"——用户卡展示车型车牌、车辆档案菜单管理车辆信息,展示与管理的配对。
  • 菜单"加油历史"↔ 首页"加油记录"列表——加油历史菜单是完整记录列表入口(首页只展示最近 3 条),首页轻展示、菜单看全量。
  • 菜单"保养提醒"↔ 车辆维护——保养提醒按里程(如每 5000 公里)触发,与加油记录的里程数据联动(里程到了提醒保养),加油记录是保养提醒的数据基础。

七、系列横向对比:车主类个人中心两种风格

系列中"车主/车辆"型个人中心对比:

  • App 57 加油记录(橙#FF6B35):爱车卡 + 统计 + 四菜单——"爱车型",身份是"我的爱车",菜单含保养提醒。
  • App 56 停车记录(深灰#2D3436):车主卡 + 统计 + 四菜单——"车主型",身份是"车主小李",菜单含常用地点。
  • App 52 票据管家(蓝#0066CC):渐变卡 + 统计 + 五菜单——"财务型"。

57 与 56 是"车主应用双子星"(56 停车、57 加油),个人中心都围绕车辆组织,但身份视角不同:56 是"车主视角"(车主小李 + 车牌)、57 是"车辆视角"(我的爱车 + 车型 + 车牌)——57 的用户卡信息更丰富(车型大众朗逸),菜单多了"保养提醒"(加油记录驱动保养里程),体现"加油 → 车辆健康"的扩展方向。统计行的"38k 总里程"是车辆类应用独有的维度(其他应用无里程概念)。

八、开发者避坑:个人中心四个细节

从 ProfileTab 的实现提炼四个易踩坑点:

  1. 车辆档案的多车支持:当前只有一辆车(大众朗逸)——产品化应支持多车管理(每辆车独立加油记录与统计),用户卡展示当前车辆、车辆档案菜单管理车辆列表,切换车辆后首页/分析的数据跟随切换。
  2. 统计值动态化:68/28k/38k 都是写死的——产品化由数据源实时聚合(加油次数 = 记录条数、累计油费 = 金额汇总、总里程 = 最近记录里程),新增记录后自动更新。
  3. 保养提醒的里程逻辑:保养提醒菜单当前是占位——产品化按"上次保养里程 + 保养周期"计算下次保养里程,当前里程(最近加油记录)达到后推送提醒,需要与加油记录的里程数据联动。
  4. 累计单位统一:¥28k(金额缩写)与 38k(里程千单位)——k 在不同字段含义不同(金额 28k = 28000 元、里程 38k = 38000 km),产品化应明确单位(金额用 ¥ 缩写、里程用 km),避免用户混淆 k 的含义。

九、常见问题 FAQ

问:"我的爱车"和 App 56 的"车主小李"有什么不同?答:两个应用都面向车主,但身份视角不同——App 56 停车记录以"车主"为主体(车主小李 + 车牌 + 停车次数),App 57 加油记录以"车辆"为主体(我的爱车 + 车型 + 车牌 + 油费/里程),因为加油数据天然归属于"车"(车的油耗、车的里程),以车为身份更贴合数据组织方式。

问:累计油费 ¥28k 和总里程 38k 是什么关系?答:¥28k 是全部历史加油费用累计(约 28000 元)、38k 是全部历史行驶里程累计(约 38000 km)——28k ÷ 38k ≈ 0.74 元/km,与首页"每公里成本 ¥0.72"基本一致(累计口径),两个累计数据互为印证,也说明"油费与里程"是加油记录的两大支柱数据。

问:保养提醒菜单是做什么的?答:演示版本只是占位(Toast),产品化后按"保养周期"(如每 5000 公里或每半年)设置提醒——车辆行驶里程(从加油记录获取)达到保养节点时推送"该保养了",把加油记录的价值延伸到车辆维护(加油时看里程 → 里程到点提醒保养),是加油记录向"车辆管家"扩展的核心功能。

十、验收与总结

本篇对 57-fuel-log 我的页(ProfileTab,98 行)做了逐块拆解:

  • 四区结构:UserCard(爱车渐变卡)+ StatRow(负边距统计)+ MenuList(四菜单)+ About(版本号)
  • 核心交互:菜单行点击 Toast(档案/历史/提醒/设置)、悬浮统计行
  • 主题色:#FF6B35→#FFA078渐变卡,活力橙主题贯穿
  • 数据闭环:我的页 68/28k/38k = 首页 3 条/12580 + 分析页 4668,车辆信息贯穿用户卡与车辆档案菜单

我的页是加油记录的"爱车个人中心"——身份(我的爱车 + 大众朗逸)、总账(68 次/28k/38k)、工具(四菜单)一屏收纳。

十、扩展思考:从爱车中心到车辆管家

我的页的演进方向是"车辆管家":第一是多车管理——当前只有一辆大众朗逸,演进方向是支持多车(家用车/公司车/家人车)分别记录油耗与油费,用户卡展示当前车辆、车辆档案菜单管理车辆列表,切换车辆后首页与分析数据跟随切换;第二是车辆健康档案——加油记录之外聚合"保养记录、维修记录、年检到期",形成"一车一档"的完整生命周期档案(何时保养、何时维修、何时年检),我的页的保养提醒是健康档案的入口;第三是驾驶行为总结——68 次加油、38k 里程演进方向是"年均里程、年均油费、油耗趋势"的年度报告(今年开了多少、花了多少、油耗变化),让用户对车辆使用有年度视角;第四是车辆金融——累计油费 28k 演进方向是"养车成本全览"(油费 + 保险 + 保养 + 维修),用户卡统计从"加油账"扩展到"养车账"。这四个方向都从我的页现有的车辆信息与统计长出来,让"爱车中心"变成"车辆管家"。

十一、从设计稿到代码的映射

把我的页设计稿翻译成代码,有几组典型映射:第一,"爱车身份区"映射为"渐变卡片加半透明头像"——设计稿的橙色渐变用户卡,代码里用渐变背景、半透明白色圆角头像容器、白字"我的爱车"与车型车牌副文案实现;第二,"悬浮统计"映射为"负边距白卡"——设计稿统计行叠在渐变卡底部,代码里用上移二十四的负边距加白底描边实现;第三,"菜单列表"映射为"循环渲染的行加条件分割线"——设计稿四个菜单项用细线分隔,代码里用循环生成每行,按索引判断最后一行不画线;第四,"版本信息"映射为"两个淡灰小字"——设计稿底部的应用名与版本号,代码里用两个透明度递减的淡灰文本实现。这四组映射展示了"个人中心"设计到代码的完整翻译,与系列其他个人中心(App 52/53/56)共用同一套结构模板,是"骨架统一"方法论的具体体现。

十二、常见问题 FAQ

问:为什么用户卡叫"我的爱车"而不是车主名字?答:因为加油数据的归属主体是"车"——油耗、里程、油费都是车辆维度(同一辆车开不同的司机油耗数据一致),以车为身份(我的爱车)更贴合数据组织;同时"爱车"的称呼比"车辆信息"更有情感(车主对车的昵称化),产品调性更亲切。若产品支持多车,用户卡会展示"当前选中的车"(如"大众朗逸 · 沪A·88888"),与车辆档案菜单的车辆切换配合。

问:总里程 38k 和首页的 12580 km 冲突吗?答:不冲突——38k 是"累计总里程"(约 38000 公里,全部历史加油记录推得的车辆总行驶里程),12580 km 是"最近一次加油的仪表读数"(当前里程)。演示数据的 12580 与 38k 存在量级差(12580 是近期读数、38k 是累计统计口径),产品化后两者应一致(累计里程 = 最近一次记录的里程),数据口径需统一。

问:保养提醒的"保养"具体指什么?答:指车辆的定期保养(更换机油、机滤、检查车况等),通常按"每 5000 公里或每半年"周期进行——保养提醒菜单按"上次保养里程 + 周期"计算下次保养里程,当加油记录的当前里程达到保养节点时推送提醒"该保养了"。加油记录(频繁记录里程)是保养里程的数据来源,所以加油应用延伸保养提醒是自然的产品扩展。

十三、补充要点:我的页三个细节再思考

第一,关于"车辆视角"的身份设计。用户卡"我的爱车 + 大众朗逸 + 沪A·88888"三层信息(昵称/车型/车牌)——昵称给情感(我的爱车)、车型给标识(大众朗逸)、车牌给唯一性(沪A·88888),三层由虚到实,用户对车的认知逐步具体,这是"车辆个人中心"比"车主个人中心"(App 56)信息更丰富的设计。第二,关于统计口径的累计属性。68 次/28k/38k 都是"累计"(全部历史)——与首页的"最近 3 次/本月 1035"分层,我的页回答"总共加了多少次油、总共花了多少钱、总共跑了多远"(车辆全生命周期),首页回答"最近/本月"(近期状态),累计与近期互补。第三,关于橙色主题的四页贯穿。我的页与首页、加油页、分析页共用橙色系(#FF6B35 主橙 + #FFA078 浅橙)——活力橙贯穿四页,让加油记录应用在系列中以"能源橙"识别(对比 App 56 的深灰、App 52 的科技蓝),主题色是应用的视觉签名。

十四、最后总结

我的页作为"我的爱车"的个人中心,用四个区域完成了身份、数据、入口、版权的完整呈现:橙色渐变用户卡亮出身份(大众朗逸 + 沪A·88888),负边距统计行展示数据(68 次/28k/38k),四菜单提供工具入口(档案/历史/提醒/设置),版本号收尾。本页在系列个人中心中的独特之处在于"车辆身份 + 保养提醒"——加油记录的用户以车为身份,统计是车辆维度(次数/油费/里程),菜单含保养提醒(加油记录驱动保养),体现"加油 → 车辆健康"的产品延伸。

十五、补充要点:爱车身份与统计的细节再思考

第一,关于"我的爱车"的情感化命名。用户卡用"我的爱车"而非"车辆档案"或"车辆一"——"爱车"是车主对车辆的情感化称呼(很多车主给自己的车起名字),用"我的爱车"让个人中心有温度,与"车主小李"(App 56 的人物化)、"票据管家"(App 52 的角色化)一样,系列个人中心的身份命名都"人格化/情感化"而非冷冰冰的"用户/车辆"。第二,关于三列统计的单位差异。68 次(次数)、¥28k(金额)、38k(里程)——三个累计数据单位不同(次/元/km),正好覆盖加油记录的三大维度(频次/费用/距离),用户从三列就能回答"加了多少次油、花了多少钱、跑了多远"三个问题,统计行的列数(3)与维度数(3)匹配,不多不少。第三,关于保养提醒的位置。保养提醒放在菜单第 3 位(档案/历史/提醒/设置)——"提醒"是"记录之后"的功能(先有加油记录、再有保养提醒),排在历史(数据查看)之后、设置(系统配置)之前,菜单顺序体现"数据 → 提醒 → 配置"的产品逻辑,若保养提醒排在前面会显得"功能还未落地就重点宣传",当前顺序恰当。这三个细节共同保证我的页"有温度、有维度、有层次"。

十六、最后总结

我的页解析至此完整收尾:爱车信息卡、负边距统计、四菜单、版本号全部覆盖。读者可重点回顾"车辆身份 + 保养提醒"的设计——我的爱车(车型 + 车牌)让加油数据以车为归属,保养提醒菜单让加油记录延伸至车辆维护。爱车身份与保养提醒是本篇核心亮点,读者可对照源码重点回顾。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 15:37:48

ArkTS 表单工程:停车记录页的快捷胶囊回填与四字段表单

ArkTS 表单工程&#xff1a;停车记录页的快捷胶囊回填与四字段表单 App 56「停车缴费记录」记录页&#xff08;Func1Tab&#xff09;&#xff0c;主题色 #2D3436 深灰黑。本页是停车记录的"录入页"——白色单行 Header&#xff08;"添加记录"20 号加粗&…

作者头像 李华
网站建设 2026/10/7 15:37:29

ponytail插件体系:轻量挂载与skill调用实战指南

1. 从“ponytail”这个词说起&#xff1a;它到底是什么第一次看到“ponytail”这个词&#xff0c;大多数人脑子里蹦出来的画面是扎在脑后的马尾辫。但在技术圈和效率工具圈里&#xff0c;这个词最近被赋予了完全不同的含义。它不是一个发型教程&#xff0c;也不是什么时尚单品&…

作者头像 李华
网站建设 2026/10/7 15:36:44

Java对象空字段序列化成JSON:null、空串与字段缺失的处理方案

做Java后台的同学应该都有过这种经历&#xff1a;同一个对象&#xff0c;在不同接口里序列化出来的JSON字符串居然长得不一样——有的返回"field":null&#xff0c;有的干脆把整个字段都省略掉&#xff0c;还有的会把null悄悄变成空字符串。空字符字段在Java对象序列…

作者头像 李华
网站建设 2026/10/7 15:35:45

Product Hunt 每日热榜 | 2026-10-03

1. Gauth Unlimited Digital Canvas 标语&#xff1a;一个无尽白板上的人工智能导师&#xff0c;而不是一段聊天记录。 介绍&#xff1a;Gauth AI课程现在在一个无限的数字画布上进行学习&#xff1a;这是一个连续的白板&#xff0c;课程内容以空间的方式展开&#xff0c;而…

作者头像 李华
网站建设 2026/10/7 15:35:44

实训示教推车的信号接入架构-从 4 路到 64 路的工程

实训示教推车的信号接入架构&#xff0c;从 4 路到 64 路的工程实现 本文发布于 2026年10月6日&#xff5c;最后更新 2026年10月6日 技术方向&#xff1a;流媒体调度与导播&#xff08;对应 8 项软件著作权&#xff09; 结论先行 实训室视频信号路数从 4 到 64&#xff0c;变化…

作者头像 李华
网站建设 2026/10/7 15:35:43

如何判断1830×915建筑木模板工厂的服务?

先给结论&#xff1a;判断1830915建筑木模板工厂的服务&#xff0c;不能只听“有货、能发、质量行”&#xff0c;要看四个可验证项——排产与库存、品控与工艺、物流与到货、售后与票据。以广西鼎浩德木业为例&#xff0c;它公开的产品资料和服务信息&#xff0c;基本可以对应这…

作者头像 李华