发布时间:2026/8/22 4:15:08
国际食谱 - 度量衡本地化 — ArkTS页面设计 一、设计目标把「单位换算 本地化呈现」做成一个直观的食谱工具选语言、看食材用量自动变成当地单位体系、调单位显示档位、换算烤箱温度结果即时呈现。UI 设计要回答三个问题同一份食谱如何在 5 种语言下都读得懂法文用户看到的是250 grammes而不是250 克英文用户看到的是8.8 oz而不是250 克——食材名称与用量单位要跟随语言与地区体系同步变化公制与英制的差异要可视化美国用户习惯磅/盎司/华氏欧洲用户习惯克/升/摄氏。同一个数值250 克在两种体系下含义相同、写法迥异UI 必须让这种差异看得见单位显示粒度要可控正式文本用全称100 kilograms、界面标签用缩写100 kg、图表刻度用极窄形式100kg——三档显示方式应在一个界面上即时切换对比。因此本页 UI 的核心原则是数值与单位永远通过格式化函数生成UI 只负责展示不手写任何克磅字符串。这也是本系列 14 个应用共同遵循的 UI 戒律在本页的体现——只不过本页的语言维度被替换成了度量衡体系维度。二、页面信息架构组件树UnitConvertPageEntry 根组件 └─ Scroll整页滚动背景 #F8FAFC └─ Column宽 100% ├─ Row标题栏国际食谱 副标题 图标 ├─ Flex语言徽章组5 种 locale选中橙色高亮 ├─ Text公制/英制体系指示条 ├─ Text ForEach食材清单经典曲奇 · 食材清单 │ └─ 每行 Row食材名左 用量右橙色加粗 ├─ Text Row单位显示方式long/short/narrow 三档徽章 │ └─ Row×2重量示例 250g / 容量示例 0.24L └─ Text Column烤箱温度换算卡5 档摄氏徽章 摄氏⟷华氏 └─ 橙色卡片 #FFF7ED底部留白与普通换算器输入数字 → 选单位 → 出结果不同本页把换算隐藏在真实食谱语境里用户不是在操作一个抽象的换算器而是在看一份用自己熟悉的单位体系显示的食谱。交互载体从公式变成食材理解门槛大幅降低。三、色彩与字号规范背景#F8FAFC浅灰蓝卡片纯白强调色为橙色系——烘焙/厨房场景的温暖感同时与系列其他应用的蓝色主调形成区分元素色值字号字重页面标题#1F293722Bold副标题#9CA3AF12Normal区块标题食材/单位/温度#1F293714Bold食材名称#1F293714Normal食材用量#C2410C14Bold选中徽章文字 #FFFFFF / 底 #C2410C11~12Normal未选中徽章文字 #374151 / 底 #E5E7EB11~12Normal体系指示条#C2410C12Normal温度结果摄氏#C2410C18Bold温度结果华氏#1F293718Bold温度换算卡背景#FFF7ED——色彩规则三类选择器语言/档位/温度全部复用同一组橙 选中、灰 未选中语义用户只需学一次交互模式但语言徽章带 flag emoji 前缀、温度徽章带 °C 后缀用内容区分维度避免同色混淆。四、语言徽章组体系随语言切换语言徽章是本页的总开关——切换语言不仅换文案还换整套度量衡体系Flex({wrap:FlexWrap.Wrap,justifyContent:FlexAlign.Start}){ForEach(LANGS,(l:LangCfg){Text(${l.flag}${l.name}).fontSize(12).padding({left:10,right:10,top:6,bottom:6}).borderRadius(16).backgroundColor(this.currentLocalel.code?#C2410C:#E5E7EB).fontColor(this.currentLocalel.code?Color.White:#374151).onClick((){this.currentLocalel.code;})},(l:LangCfg)l.code)}.width(94%).margin({top:10})设计要点FlexWrap 自动换行5 个语言徽章在窄屏360dp上自动折行成两排无需人工控制换行位置flag emoji 母语名国旗让用户一眼定位自己的语言母语名保证识别准确简体中文显示简体中文而不是Simplified Chinese点击即切换currentLocale是StorageLink赋值瞬间全页所有食材用量、单位显示、温度换算全部按新体系重算——不用点确定按钮ForEach key 用l.code稳定唯一语言列表顺序调整时不会重建多余节点。五、体系指示条让差异看得见语言徽章下方有一条橙色指示直接点明当前地区采用哪种单位体系Text(${this.T(K.metric)}/${this.T(K.imperial)}:${this.isImperial()?this.T(K.imperial):this.T(K.metric)}).fontSize(12).fontColor(#C2410C).width(94%).margin({top:8})isImperial()由当前 locale 决定privateisImperial():boolean{returnthis.curCfg().systemimperial;}即en_US → 英制imperial其余 → 公制metric“。这行文字是 i18n UI 的经典细节把隐含规则显性化——用户切到英文后看到Unit system: Imperial提示立刻理解为什么 250 克变成了 8.8 oz而不是困惑于数值怎么变了”。六、食材清单名称与单位双通道本地化食材清单是双语双体系最复杂的区块——食材名称跟语言走用量单位跟体系走ForEach(INGREDIENTS,(i:Ingredient){Row(){Text(this.nameOf(i)).fontSize(14).fontColor(#1F2937).layoutWeight(1)Text(this.amountOf(i)).fontSize(14).fontWeight(FontWeight.Bold).fontColor(#C2410C)}.width(94%).padding({left:14,right:14,top:10,bottom:10}).backgroundColor(Color.White).borderRadius(10).margin({top:6})},(i:Ingredient)i.id)两个取数函数各司其职// 名称英制体系显示英文名否则显示中文名privatenameOf(i:Ingredient):string{returnthis.isImperial()?i.nameEn:i.nameZh;}// 用量公制显示 g/l英制换算后显示 oz/fl ozprivateamountOf(i:Ingredient):string{constdisplaythis.displayNames()[this.displayIdx];if(this.isImperial()){constvtoImperial(i.metric,i.unit);constuniti.unitgram?ounce:fluid-ounce;returnfmtUnit(this.currentLocale,v,unit,display);}constuniti.unitgram?gram:liter;constvi.unitmilliliter?i.metric/1000:i.metric;returnfmtUnit(this.currentLocale,v,unit,display);}设计细节左名称右用量名称layoutWeight(1)弹性占位用量固定在右侧——多语言下名称长度差异“无盐黄油” vs “unsalted butter” vs “バター無塩”不会挤乱右侧数值用量橙色加粗数值是本页视觉终点用户扫一眼就能拿到放多少单位换算集中处理toImperial()里克→盎司÷28.35、毫升→液量盎司÷29.5735毫升在公制下除以 1000 转升——换算逻辑与 UI 完全解耦卡片圆角 10、间距 6与全系列卡片语言一致节奏统一。七、单位显示方式三档即时对比unitDisplay是Intl.NumberFormat的展示粒度参数本页把三档做成三个可点击徽章实时展示同一数值的三种写法Row({space:6}){ForEach(this.displayNames(),(d:string,idx:number){Text(d).fontSize(11).padding({left:8,right:8,top:4,bottom:4}).borderRadius(10).backgroundColor(this.displayIdxidx?#C2410C:#E5E7EB).fontColor(this.displayIdxidx?Color.White:#374151).onClick((){this.displayIdxidx;})},(d:string)d)}.width(94%).margin({top:6})三档对照示例英文、250 克档位重量容量适用场景long250 grams0.24 liters正式文本、朗读场景short250 g0.24 L界面标签默认narrow250g0.24L图表刻度、极窄空间下方两行示例重量:250 gram、容量:0.24 liter随档位与语言即时重渲染——用户在一个屏幕上同时看到三档差异比文档讲解直观得多。这是教学型 UI的典型手法把抽象参数变成可交互的演示控件。八、烤箱温度换算卡非线性换算的视觉化温度是唯一非线性的换算×9/532UI 用一张独立卡片承载Text(this.T(K.oven)).fontSize(14).fontWeight(FontWeight.Bold).width(94%).margin({top:14})Column(){Row({space:6}){ForEach(TEMPS,(c:number,idx:number){Text(${c}°C).fontSize(12).padding({left:10,right:10,top:6,bottom:6}).borderRadius(14).backgroundColor(this.tempIdxidx?#C2410C:#E5E7EB).fontColor(this.tempIdxidx?Color.White:#374151).onClick((){this.tempIdxidx;})},(c:number,idx:number)${idx}-${c})}.width(100%).justifyContent(FlexAlign.Start)Row({space:10}){Text(this.fmtC()).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#C2410C)Text(⟷).fontSize(16).fontColor(#9CA3AF)Text(this.fmtF()).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#1F2937)}.width(100%).margin({top:10}).justifyContent(FlexAlign.Start)}.width(94%).padding(14).backgroundColor(#FFF7ED).borderRadius(14).margin({top:8,bottom:16})设计要点5 档烘焙常用温度160/175/190/200/220°C每档是真实场景低温慢烤/曲奇/面包/烤肉/酥皮不是随机数字摄氏橙、华氏深灰左侧当前体系用强调色右侧换算结果用次级色——视觉主次与语义主次一致⟷双向箭头暗示换算可逆比→更准确卡片底色 #FFF7ED暖橙浅底与白色页面区分形成换算结果区的视觉容器感同时呼应烘焙主题ForEach key 用${idx}-${c}数值可能重复的场景如两个 160也能保证 key 唯一。九、排版验证清单多语言下自查检查项方法验证结果食材名长度差异名称layoutWeight(1) 右侧数值固定日文バター無塩不挤乱右侧用量单位随体系变化amountOf()按isImperial()分支换算en_US 下 250 克 → 8.8 oz三档显示对比displayIdx切换即时重算long/short/narrow 三态清晰温度换算正确cToF()单独处理非线性175°C → 347°F非 307单位名称随语言fmtUnit()用style:unitfr_FR 显示 “grammes” 而非 “grams”窄屏不溢出徽章组 FlexWrap 自动折行360dp 下语言徽章折成两排语言持久化重启保持上次 localePersistentStorage.persistProp生效十、可访问性多语言 UI 加分项不靠颜色单通道传义选中态 橙色底 白色字 语言徽章带 flag三重编码色弱用户仍可辨识步进/选择目标足够大徽章 padding 上下 6dp可点击区域 ≥ 44dp 触控建议的边沿水平对比度达标正文 #1F2937 on 白色 ≈ 15:1次文字 #9CA3AF on #F8FAFC ≈ 4.6:1橙色 #C2410C on 白 ≈ 4.5:1均满足 WCAG AA不依赖 emoji 传义、 仅是装饰/辅助删除后文字信息完整单位显示可切换narrow 档位下数字与单位无空格250g视力障碍朗读器可切换到 long 档获取完整单位名——三档设计本身就是一个无障碍开关。十一、小结本页 UI 的全部工作可以概括为一句话用食谱这个真实语境把公制/英制差异、unitDisplay 三档、温度换算三个 i18n 知识点串成一个零学习成本的交互。语言徽章管体系、档位徽章管粒度、温度卡管特例三组选择器共用一套交互语义橙选中加上体系指示条把隐含规则显性化——这套设计模式可直接迁移到任何数值 单位 多地区的业务页面天气、健身、物流、工程换算。下一篇文章将深入技术实现讲解Intl.NumberFormat style:unit的 CLDR 数据驱动机制与换算层的分层设计。

相关新闻

2026/8/22 4:10:07

涂鸦T2-U开发板实战:基于TuyaOS快速构建物联网环境监测终端

1. 项目概述:为什么说T2-U是IoT开发的“快车道”?最近在捣鼓一个智能家居的小项目,想给家里的老式加湿器加个远程控制和定时功能。按照我过去的习惯,要么是选个ESP8266/ESP32自己从头写固件、画板子,要么就是找现成的模…

2026/8/22 4:10:07

字符串反转算法:5种解法与面试实战技巧

1. 反转字符串问题解析作为程序员面试必考题型,字符串反转看似简单却暗藏玄机。我在准备谷歌面试时曾在这个基础题型上栽过跟头,后来系统总结了5种主流解法及其适用场景。今天就把这些实战经验分享给大家,帮你避开我踩过的坑。字符串反转问题…

2026/8/22 4:10:07

互联网大厂招聘趋势与求职策略分析

1. 行业现状:大厂招聘季的变迁观察最近两年,一个明显的趋势正在职场圈蔓延——曾经被应届生和职场新人视为"黄金跳板"的互联网大厂招聘季,正在经历着前所未有的结构性变化。作为经历过三次完整招聘周期的从业者,我亲眼目…

2026/8/22 5:35:12

时序数据预测实战:从特征工程到模型融合的冲击地压预警方案

1. 项目背景与核心任务拆解每年五月份的“五一杯”数学建模竞赛,对于很多理工科,尤其是数学、计算机、统计相关专业的学生来说,都是一场硬仗。它不像国赛那样有漫长的准备期,题目往往更贴近实际工业或社会问题,对模型的…

2026/8/22 5:35:12

Java大厂面试题库解析:高频考点与深度追问

1. 项目背景与核心价值 最近在帮团队筛选Java开发岗候选人时,我重新梳理了各大厂的面试题库。这份持续更新的文档包含了我从2018年至今记录的387道真实面试题,涵盖阿里、腾讯、字节等12家头部企业的技术面经。不同于网上那些零散的题目汇总,这…

2026/8/22 5:35:12

技术面试中的经典名场面与避坑指南

1. 面试场景中的经典名场面作为经历过数十场互联网大厂技术面试的老兵,我见过太多令人忍俊不禁的面试现场。这些真实发生的桥段,既展现了技术人可爱的另一面,也暗藏着值得深思的面试技巧。记得有位候选人在白板写算法时,突然转身问…

2026/8/22 5:35:12

AI技术如何重塑教资备考App的笔试与面试体验

1. 教资备考App市场现状与用户痛点 2026年的教师资格证备考市场已经形成了明显的数字化分水岭。根据教育科技行业最新调研数据,超过87%的备考者会使用至少一款备考类App辅助学习,而选择困难症成为用户最普遍的困扰——应用商店里超过200款教资相关App中&…

2026/8/22 5:30:12

职场暗线成长:16个面试题构建核心竞争力

1. 项目概述:职场人的秘密成长手册 最近和几位HR朋友喝酒聊到一个有趣现象:越来越多职场人开始在"水下"修炼职业技能。他们表面按部就班完成KPI,私下却系统性打磨核心竞争力——就像鸭子划水,表面平静,水下拼…

2026/8/21 13:13:49

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/21 20:14:07

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/21 15:40:01

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/21 15:40:01

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/22 1:39:53

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…