我用 ArkTS 写了个「吃什么」决策工具,聊聊鸿蒙开发中几个有意思的实现细节

深圳鸿蒙欧拉生态政策解读:工程师如何把握千亿级产业机遇 操作系统作为连接硬件与应用的底层软件平台,其核心价值在于提供稳定、高效、安全的运行环境,并管理硬件资源与调度应用进程。随着物联网、边缘计算等技术的发展,操作系统正从单一设备向分布式、全场景协同演进,以满足智能终端、服务器、嵌入式设备等多形态硬件的统一管理需求。这一技术演进催生了巨大的产业价值,尤其在国产化替代与自主可控的战略背景下,构建独立的技术生态成为关键。OpenHarmony与openEuler作为面向全场景与服务器领域的开源根技术,通过分布式架构与多样性算力支持,为智能终端、工业互联网、云计算等应用 阅读详情

起因:每天中午最烦的不是工作,是吃什么

说实话这个 App 的起源特别朴素。我们办公室六个人,每天中午 11 点半准时开始那个经典问题——“今天吃啥?”。每次讨论至少 10 分钟,最后大概率还是去楼下那家黄焖鸡。

我之前在 iOS 上用过几个随机选餐的工具,但都只有一个功能:随机。问题是办公室这种场景,你随机出来的结果别人不认啊。“我不想吃这个”——一句话就把随机结果否了。

所以我想做一个带投票淘汰机制的版本。正好去年开始搞 HarmonyOS 开发,就把这个需求当练手项目做了。

App 叫「决定今天吃什么」,现在 1.2.0 版本,已经上架华为应用市场。

三种模式,覆盖不同决策场景

我设计了三种决策模式:

🎲 随机模式 — 一个人的时候用,从本地收藏的餐厅库里直接抽。带历史排重,最近 N 次选过的不会再出现。

🎡 转盘模式 — 有点仪式感的随机,视觉上比直接弹结果有趣。转盘最多显示有限数量的分段,超出的话会按权重取 top N。

🗳️ 投票模式 — 这才是核心。多人场景下,每个人划掉自己不想吃的选项,剩下的再随机。平票的情况下走加权随机,不会卡死。

投票模式的逻辑其实不复杂,但实际用起来体验差别很大。同事们从"我不想吃这个"变成了"我把这三个划掉了",心态完全不一样——参与感到位了,对结果的接受度就高。

技术实现:ArkTS 状态管理和筛选逻辑

整个项目用 ArkTS 写的,状态管理没用特别重的框架,自己封装了一个 AppStore 类来管理餐厅列表、历史记录和设置项。数据持久化走的本地存储。

候选餐厅的筛选逻辑是我觉得写得比较清爽的一块。支持按标签、预算上限、距离三个维度过滤,加上模糊搜索:

export function getCandidates(all: Restaurant[], query: CandidateQuery): Restaurant[] {
  const { search, filters } = query
    const s = (search || '').trim().toLowerCase()
      const f = {
          tagsAll: filters?.tagsAll || [],
              budgetMax: filters?.budgetMax || 0,
                  distanceMaxKm: filters?.distanceMaxKm || 0
                    }
                      return all
                          .filter(r => !r.archived)
                              .filter(r => {
                                    if (f.tagsAll.length > 0 && !f.tagsAll.every(t => r.tags.includes(t))) return false
                                          if (f.budgetMax > 0 && r.price.max > f.budgetMax) return false
                                                if (f.distanceMaxKm > 0 && r.distanceKm > f.distanceMaxKm) return false
                                                      return true
                                                          })
                                                              .filter(r => {
                                                                    if (!s) return true
                                                                          const hay = `${r.name} ${r.cuisines.join(' ')} ${r.tags.join(' ')}`.toLowerCase()
                                                                                return hay.includes(s)
                                                                                    })
                                                                                    }
                                                                                    ```
这段看着简单,但实际场景里"距离 2 公里内、人均 30 以下、不要火锅"这种组合筛选用起来挺顺手的。

随机选取这块我做了加权随机 + 历史排重。每个餐厅有个 weight 字段,可以手动调(比如你特别喜欢某家店就调高),同时最近选过的自动权重归零:

```arkts
export function pickRandom(restaurants: Restaurant[], options: RandomOptions): { winner: Restaurant; durationMs: number } {
  const start = Date.now()
    const { settings, recentHistory } = options
      const avoidIds = new Set<string>()
        const n = Math.max(0, settings.avoidRecentN)
          for (let i = 0; i < Math.min(n, recentHistory.length); i++) {
              avoidIds.add(recentHistory[i].resultRestaurantId)
                }
                  const weights = restaurants.map(r => {
                      const base = settings.weightedRandom ? r.weight : 1
                          if (avoidIds.has(r.id)) return 0
                              return Math.max(0, base)
                                })
                                  const { item: winner } = weightedPick(restaurants, weights)
                                    return { winner, durationMs: Date.now() - start }
                                    }
                                    ```
`avoidRecentN` 默认设的 3,就是最近三顿选过的不会再出现。这个细节说小也小,但没有的话你会发现"随机"了三天连着去同一家——那就不叫随机了。

## 投票模式的平票处理

做投票模式的时候纠结过一个问题:平票怎么办?

最早我想做二次投票,但实际测下来太麻烦了,大家中午赶着吃饭没耐心再投一轮。最后的方案是平票直接用当轮投票中被保留(也就是没被划掉)的次数作为权重,做一次加权随机。说白了就是:平票的几家里,当轮被更多人留下来的那家,胜出概率稍微大一点。

这个取舍花了我大概两天时间。试过完全等概率随机、试过让发起人决定、最后还是觉得加权随机最省事也最公平。

## 数据模型的一些设计取舍

餐厅模型我放了不少字段:cuisines(菜系)、tags(自定义标签)、price(价格区间)、distanceKm(距离)、weight(权重)、favorite(收藏)。

说实话 distanceKm 这个字段有点尴尬。我一开始想接地图 API 自动算距离,但鸿蒙的地图服务在某些场景下需要联网授权,而我想把这个 App 做成纯离线可用的。所以最后变成了用户手动填一个大概距离。有点土,但能用。

后面如果华为地图的离线能力更完善了,我可能会加一个"自动获取距离"的选项。

## 关于 HarmonyOS 开发的一些感受

这是我第三个上架华为应用市场的鸿蒙 App 了。说几个真实感受:

ArkUI 的声明式写法上手之后效率确实不错,状态驱动 UI 刷新这套逻辑跟 SwiftUI 很像。但调试工具还是差点意思,有时候状态变了 UI 没更新,排查起来比较费劲。

ArkTS 本身写逻辑很舒服,类型系统够用。我整个项目的 models.ts 和 services 层写得挺顺的,TypeScript 的底子在这里。

上架审核比 iOS 快很多。我这个 App 从提交到过审大概两天。

## 当前状态和后续计划

目前 1.2.0 版本,功能基本稳定。坦白说下载量还很少,刚上线不久,还在冷启动阶段。

后续想做的事:
- 加一个"今日推荐"功能,根据天气、星期几、最近吃的东西来推荐(比如连续三天重口味了就推荐清淡的)
- - 投票模式支持分享链接,让不在身边的人也能参与
- - 导入大众点评收藏(如果 API 允许的话)
## 一个想讨论的问题

多人决策场景下平票处理,我试过三种方案都有坑:等概率随机大家觉得"白投了",发起人拍板容易得罪人,二次投票没人有耐心。你们如果遇到类似的场景是怎么处理的?或者有没有更好的思路?

华为应用市场搜「决定今天吃什么」就能找到这个 App。
正向开发与逆向开发:从概念到实战的范式解析与混合应用 在软件工程领域,正向开发和逆向开发是两种核心的构建范式,它们分别代表了从规划到实现和从成品到理解的两种不同技术路径。正向开发遵循自顶向下的设计原则,强调从需求分析、系统设计到编码实现的可控流程,适用于对架构清晰度和质量保障要求高的场景。逆向开发则从可运行的软件实体出发,通过分析、推断和重建来理解其内部逻辑,常用于对接无文档的第三方系统或进行快速原型验证。这两种范式的技术价值在于,它们为开发者提供了应对不同项目挑战的思维工具——正向开发确保系统的稳健与可维护,逆向开发则提供了破解黑盒问题和快速学习的能力。在实 阅读详情

相关推荐

鸿蒙NEXT应用开发实战:AES-256-CBC加密本地数据全解析

对称加密是数据安全领域的核心技术,它使用同一密钥进行加密和解密,在效率与安全性之间取得了良好平衡。其核心原理在于通过复杂的替换和混淆操作,将明文转换为不可读的密文,从而保护数据的机密性。在移动应用开发中,数据安全尤为重要,本地存储的用户凭证、缓存信息等敏感数据必须得到有效保护。AES(高级加密标准)作为目前最主流的对称加密算法,凭借其高强度安全性和优异的执行效率,成为移动端数据加密的事实标准。在鸿蒙NEXT应用开发中,通过系统原生提供的`cryptoFramework`加密框架,开发者可以便捷地调用AES算

weixin_34208185的博客 390

ArkUI-X与Flutter:鸿蒙5时代跨平台开发框架的实战选型指南

本文深入对比了鸿蒙5时代两大跨平台开发框架ArkUI-X与Flutter。ArkUI-X凭借与鸿蒙系统的深度集成,在鸿蒙设备上提供原生级性能、更快的启动速度和更小的包体,尤其适合鸿蒙优先战略及前端技术栈团队。Flutter则凭借成熟的全球生态和极致的多端一致性,依然是面向国际市场及复杂UI动画项目的稳健选择。文章从开发体验、性能、生态、包体等多维度提供实战选型指南。

weixin_29014237的博客 269

数学建模--十大经典常用算法

数学建模十大算法:灰色预测,蒙特卡洛,遗传算法,模拟退火法,组合算法,神经网络,动态规划,聚类算法,类比法,概率算法,Floyd算法

qq_51533426的博客 5647

我做了个鸿蒙App来解决“今天吃什么“,聊聊三种决策模式的实现思路

我们办公室五个人,每天中午十一点半开始那场"吃什么"的讨论,平均要持续十五分钟。我之前试过几个随机选餐厅的小工具,但都只有一个"随机"按钮。说白了,单纯随机解决不了多人场景——你随机出一个结果,总有人说"这个不行换一个",然后就无限循环了。所以我干脆自己写了一个,叫「决定今天吃什么」,今年上了鸿蒙应用市场。,一个人吃就转盘,多人吃就投票先排除再随机。

same4869的博客 65

飞书日历同步Outlook翻车?我踩过的坑和最终用Google Calendar成功的完整配置记录

本文详细记录了从Outlook日历同步到飞书时遇到的常见问题及解决方案,特别是通过Google Calendar实现稳定同步的完整配置流程。文章揭示了Outlook同步方案易翻车的原因,并提供了Google Calendar的避坑指南、高级技巧和企业级部署建议,帮助用户高效实现日历同步。

weixin_33724046的博客 313

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3667

我做了个鸿蒙App帮你决定今天吃什么,聊聊ArkTS下三种决策模式的实现(含转盘动画踩坑)

投票模式的逻辑是这样的:每个人划掉自己不想吃的选项,划完之后剩下的候选列表再随机出一个。有个同事说他和女朋友用投票模式之后,吃饭这事儿上的争执少了很多——两个人都把不想吃的划掉,剩下的随机出来,谁也不怪谁。我用的是"投票淘汰"这个思路——每人划掉不想吃的,剩下的随机选。我自己也是这样,一个人的时候不想动脑子,两个人的时候互相推,一群人的时候更是灾难。(N 是你想让它多转几圈),不然动画只转一小段就到了,完全没有转盘的感觉。一个人用的时候,直接随机或者转盘就行,有仪式感,转完就走,别犹豫。

same4869的博客 247

PMOS过压保护电路设计与仿真优化策略

本文深入探讨PMOS过压保护电路(OVP)的设计与仿真优化策略,详细解析PMOS管选型、稳压管特性及三极管配置等关键要素。通过Proteus仿真案例揭示典型设计误区,并提供响应速度提升、抗干扰设计等进阶优化方案,助力工程师实现高可靠性的电源保护系统设计。

weixin_42620340的博客 438

做了个鸿蒙App解决“中午吃什么“,聊聊三种决策模式的技术实现

我一开始想搞复杂的——比如用历史偏好加权、用投票轮次做衰减什么的,试了两个方案都觉得过度设计。几个人投票投出平局,说明大家对这几家的接受度差不多,随机挑一个就完事了,没必要硬凹差异。随机模式没什么好说的。投票模式是我觉得最有意思的——每个人划掉自己不想吃的选项,剩下的再随机决定。情侣之间更夸张,我和女朋友为这事吵过不止一次,说出来有点丢人。我在公司的日常大概是这样的:上午写代码挺顺畅,11点半左右开始走神,脑子里只有一个问题——中午吃什么。同类工具我翻了一圈,大多只有一个随机功能,点一下出个结果,完事。

same4869的博客 221

华为OD机试真题 新系统 2026-05-13 Python&JS语言 实现【查找能被整除的最大整数】

给定一个字符串和一个正整数,字符串由大小写字母和数字组成,要求从字符串中找出最大且能被给定正整数整除的数。

MISAYAONE的博客 224

基于YOLOv8的应急通道占用监测系统设计与实现

通过详细的数据集选择、模型训练、代码实现等内容,本博客为您提供完整的系统搭建过程,帮助您构建高效的监测系统。然而,在一些建筑物和公共场所中,应急通道经常被不当占用,导致紧急情况下无法及时使用,严重影响人员的疏散效率。YOLOv8是YOLO系列中的最新版本,它通过引入深度学习的优化和改进,在保证检测速度的同时,显著提升了检测精度。同时,随着深度学习技术的不断发展,检测精度与速度的提升将使得该系统在更广泛的场景中应用。:如果已有监控设备,可以采集应急通道的实时视频,并进行标注,生成占用监测数据集。

YOLO 797

HarmonyOS ArkTS 工具网格与路由导航:从小工具百宝箱看卡片式布局与页面跳转的实战技巧

本文介绍了如何开发一个集成了五个实用小工具的鸿蒙应用,重点解析了首页的设计与实现。文章首先说明了多页面架构的选择理由,对比了路由跳转与Swiper的适用场景。随后详细讲解了工具数据建模、路由跳转封装、页面布局设计等核心实现细节,包括: 使用interface定义工具数据结构,实现数据与UI分离 采用五种协调的配色方案区分不同工具 封装路由跳转方法提升代码可维护性 设计包含渐变背景和网格布局的精美首页界面 实现自适应两列卡片布局,优化用户体验 文章通过具体代码示例,展示了如何利用ArkUI框架构建一个功能实用

2501_93573294的博客 208

【拼多多笔试题汇总】2024-03-24-拼多多春招笔试题

A 小镇上有个奇特的游戏。游戏开始时,A 先生准备了一排 nnn 个物品。K 小姐和卢小姐则轮流进行操作。首先,K 小姐可以选择移除至多 xxx 个物品。接着,卢小姐也可以选择移除剩余物品中的至多 yyy 个。游戏的目标是,K 小姐想尽量让剩余物品的价值之和最大化,而卢小姐则想将剩余物品的价值之和最小化。假设两人都采取最优策略,请问最后剩余物品的价值之和是多少?第一行包含五个正整数 n,m,k,x,yn, m, k, x, yn,m,k,x,y,分别表示物品的总数、K 小姐最多可移除的物品数、卢小姐最多可移

春秋招笔试突围 1万+

鸿蒙APP实战:烟草制作记录App的多阶段流程管理

摘要 SLAM(同时定位与建图)技术让手机能在3D空间中实现精准定位和运动跟踪。其核心流程包括采集图像、提取特征点、构建点云、识别平面和创建锚点。通过配置ARType.WORLD模式并初始化AR会话,手机可以实时获取位姿数据(位置和朝向)。开发者可通过回调函数监听锚点变化和帧更新,从而在AR应用中稳定放置虚拟物体。当遇到跟踪失败(如移动过快或环境特征不足)时,系统会提示用户调整操作。这项技术是AR游戏、导航等应用的关键基础。

weixin_42299977的博客 208

从 VL02N 拣配到 ABAP 自动化,读懂 SD_DELIVERY_UPDATE_PICKING 的位置和风险

文章摘要:SAP SD模块中,SD_DELIVERY_UPDATE_PICKING函数模块用于处理出库交货单的拣配确认,更新交货项目的拣配数量。该函数适用于未启用WM/EWM的传统SD流程,能确保拣配状态与标准交货处理逻辑同步,比直接修改数据库更安全。但在S/4HANA Cloud等新环境中,应优先使用API_OUTBOUND_DELIVERY_SRV等公开发布接口。使用该函数时需注意参数完整性和按交货单整体处理的原则,避免逐项提交导致的数据不一致问题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 243

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HarmonyOS ArkTS API 24|自定义工具函数抽离,实现价格格式化、状态颜色映射等通用业务逻辑解耦

在React Native中开发鸿组件(这里指的是鸿蒙(HarmonyOS)组件),你需要了解鸿蒙开发的基础以及如何在React Native项目中集成鸿蒙应用。鸿蒙OS是由华为开发的一个分布式操作系统,主要用于其智能设备,如手机、平板、智能手表等。首先,你需要熟悉鸿蒙OS的开发环境设置和基本开发流程。React Native本身主要用于Harmony和Harmony平台的开发,但你可以通过以下几种方式将鸿蒙应用集成到React Native项目中:A. 使用WebView。

2401_89578244的博客 971

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

HarmonyOS ArkTS 多页面应用的设计一致性与架构思维

本文通过分析一个多工具应用中的五个功能页面(二维码、单位换算、随机决策、颜色提取、倒计时),探讨了设计系统与架构思维。五个页面采用统一的视觉语言:深色渐变背景(#1A1A2E到#0F3460)、20px边距、圆角卡片(16px)、固定导航栏结构(返回按钮+标题),同时每个工具拥有独特的主色调(如二维码#4F6EF7、倒计时#FF2D55)。文章详细拆解了字号系统(标题18px/正文14-16px)、色彩应用、阴影参数等设计要素,并指出了当前存在的不一致性(如背景色、emoji使用等)。最后提出可提取统一的设

2501_93573294的博客 331

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

我用 ArkTS 思路做了个通勤游戏化 App——把每天走的路变成金色大道

我不需要谁告诉我跑得快不快,我就想看到"这条路被我踩熟了"这个事实本身。做完之后回头看,这个需求其实特别适合 HarmonyOS 的场景化能力——持续定位、低功耗后台、本地数据安全,这些正好是鸿蒙在系统层面做得比较深的方向。下面聊聊我的实现思路和踩过的坑,给同样在做 LBS 类应用的鸿蒙开发者一些参考。除了点亮地图,还有一套养成系统:8×8 的领地征服(把家附近的格子全部点亮算占领)、科技树(解锁更高效的点亮方式)、徽章收集。本质上是把日常出行做成了一个单机游戏,不比配速、不社交、不 UGC,纯粹自己玩。

same4869的博客 210

HarmonyOS认证深度解析:从系统架构到职业发展的嵌入式工程师指南

在万物互联时代,操作系统架构与分布式技术成为构建智能生态的核心基础。分布式软总线作为关键技术,实现了设备间的无缝协同与资源共享,其设计原理深刻影响着应用开发与设备适配。掌握系统化知识体系,不仅能填补技能图谱空白,更能为开发者提供清晰的职业成长路径。对于嵌入式与物联网领域的工程师而言,理解从内核基础到上层应用框架的全栈技术栈,是应对复杂项目挑战、降低开发成本的关键。本文以HarmonyOS职业认证为切入点,深入探讨了其如何帮助开发者构建系统化知识体系,并为应用开发与设备开发两大方向提供实战指南,助力开发者在鸿

weixin_30698527的博客 457

HarmonyOS ArkTS API 24 父子组件使用 @State @Link 传参出现单向绑定无法双向同步故障深度排查解析

在现代企业数字化转型的大背景下,办公空间的绿色生态建设逐渐成为企业关怀员工的重要举措。本项目——"绿意植趣"员工植物园系统,正是为解决企业内部绿植管理痛点而设计的一套移动端应用。它不仅实现了植物图鉴浏览、个人绿植档案管理、养护任务提醒等核心功能,还融入了园艺课堂预约、绿植交换集市、积分兑换等社交化运营机制,打造了一个完整的办公绿植生态闭环。从技术栈角度来看,该项目完全基于鸿蒙操作系统的 ArkTS 语言构建。ArkTS 是在 TypeScript 基础上扩展而来的声明式开发语言,它继承了 TypeScrip

wilbur1688的博客 417

HarmonyOS 6效果实现:“双数组并行“的数据结构在ArkTS中常用于简单的图表数据绑定场景——天数作为X轴标签,人气值作为Y轴高度

技术引言HarmonyOS 6.1.1作为华为全场景分布式操作系统的最新里程碑版本,带来了更为强大的ArkTS声明式开发范式与完善的ArkUI组件体系。在HarmonyOS ArkTS API 24的基础之上,开发者可以充分利用、、等核心装饰器构建出高性能、高响应的复杂交互界面。本文将以一款"QQ语聊·派对房"语音社交应用为实战案例,深入剖析从数据建模、状态管理、粒子动画到多弹窗编排的完整技术链路。该应用涵盖了底部四Tab导航、顶部六Tab分类切换、四类弹窗(开房新增、麦位编辑、退房删除、房间详情查看)、麦

2501_92985290的博客 175

我做了一款精力管理App「元気手账」,聊聊从 Swift 移植到鸿蒙 ArkTS 的真实经历

市面上的情绪记录App我试了好几个,要么让我写一大段日记(我懒),要么就是打个心情emoji完事(太粗糙)。我想要的是一个特别轻量的东西——就像手机电量百分比一样,随手记一笔"+20 跑步回来精神了"或者"-30 项目评审被锤了",然后在时间轴上看到今天的能量流向。iOS版我自己用着爽,但换到华为手机的时候就断了,记录习惯一中断基本就废了。去年有段时间状态特别差,每天下午三点准时犯困,开会完脑子一片浆糊,但又说不清到底是什么在消耗我。于是我做了「元気手账」。跑了一段时间自己用着挺顺手,就开始琢磨鸿蒙版。

same4869的博客 122

一个开源充电系统如何搞定鸿蒙App、微信小程序和云平台?聊聊我的全栈技术选型与架构设计

本文深入探讨了一个开源充电系统的全栈架构设计,重点解析了如何通过鸿蒙原生开发(HarmonyOS 4.0)、微信小程序和云平台的技术融合,实现多端协同与数据一致性。文章详细介绍了技术选型的核心考量、多端协同的架构设计以及云平台的管理效能优化,为开发者提供了实用的经验总结和性能优化方案。

weixin_30697239的博客 386

2026年IT圈最火话题:AI智能体与鸿蒙生态大爆发!你抓住机会了吗?

IT行业正经历深度变革:AI智能体成为"数字同事",导致基础岗位缩减而催生新职业;纯血鸿蒙系统装机破亿,推动开发者转型和政策倾斜。建议从业者掌握AI工作流开发、关注鸿蒙生态、培养垂直领域专长以应对变革。这场静默革命正在重塑行业格局,把握技术趋势成为职业发展的关键。

他很懒,但也在努力的生活着 684

HarmonyOS7 设计 Token 不先统一,组件库迟早失控:颜色字体间距这样管

你有没有经历过这种场面:设计师说"这个蓝色不对,应该是 #0A59F7 不是 #1060FF",然后你全局搜了一下代码,发现项目里用了 17 种不同的蓝色。我当时看到这个搜索结果差点没绷住。后来我搞了一套 Design Token 系统,这类问题基本上就消失了。今天聊聊怎么在 HarmonyOS 里落地。Design Token 说白了就是把设计决策变成变量。颜色不直接写#0A59F7,而是写;间距不直接写16px,而是写spacingMd。这么做的好处显而易见——设计师想换主色调?

全栈若城,专注知识分享 3619

记录轨迹这个需求,我用 ArkTS 的思路在 iOS 上先验证了一版

不需要手动"开始记录",不需要打卡签到,不需要拍照上传。日积月累,你去过的街区会被逐渐"点亮",空白区域就是还没踏足的地方。这里有一个很关键的产品决策:不做配速、不做心率、不做卡路里。打开各种旅行 App,要么让我发游记,要么让我打卡景点,要么弹一堆社交推荐。后来我做了「雁过留痕」这个 App,目前已经在 iOS App Store 上架,自己用了三个多月,也在持续关注 HarmonyOS 生态的适配可能性。轨迹渲染这块比较有意思,我用了像素风格的地图渲染方案,而不是常见的导航地图样式。

same4869的博客 235
上一篇: 我做了一款鸿蒙加密App,加密后的密文看起来像一段正常中文——聊聊 AES-GCM + 字谱替换的实现思路
下一篇: 从SwiftData到鸿蒙relationalStore:移植一款精力管理App的三周踩坑记
SameX-4869
博客等级 码龄17年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值