open harmony 项目实战:用诗词配对、默写和打卡打造创新学习体验

很多学习类 App 容易做成“内容列表 + 详情页”的结构,用户看完就走,缺少持续学习动力。我的 OpenHarmony 语文学习项目尝试把诗词学习拆成多个轻互动场景:每日打卡、诗词默写、诗词配对、朝代排序,让用户不只是“看内容”,而是“参与学习” 😊。

这篇文章主要复盘项目中的创新体验设计。

一、学习中心:把进度做成轻量实况反馈

学习中心不是单纯的菜单页,而是把“连续学习天数”“今日是否完成”“本周打卡进度”放在第一屏。用户一打开就能知道自己今天的学习状态。

private onCheckIn(): void {
  const today = this.getTodayDate();
  if (this.isDateChecked(today)) {
    promptAction.showToast({ message: '今日已打卡 ♡', duration: 1500 });
    return;
  }

  const dates = this.parseCheckInDates();
  dates.push(today);
  this.checkInDatesStr = dates.join('|');
  this.currentStreak = streak;
  this.todayCompleted = true;
  this.savePersistedData();
}

虽然当前项目还没有接入系统级“实况窗”,但这个学习中心已经具备了实况窗的产品雏形:状态明确、即时反馈、持续更新。后续可以把“今日背诵任务”“连续学习天数”进一步接到系统级提醒或卡片能力中。

二、诗词默写:从阅读走向主动回忆

诗词默写页面的核心不是复杂算法,而是把学习路径设计清楚:

  1. 先选择一首诗。
  2. 展示上下文和输入框。
  3. 用户提交后即时判断。
  4. 答错时给出参考答案。
private submitAnswer(): void {
  const item = this.currentItem();
  const ok = this.normalize(this.userInput) === this.normalize(item.blankAnswer);
  if (ok) {
    this.hintReveal = '';
    promptAction.showToast({ message: '回答正确 ♡', duration: 1500 });
  } else {
    this.hintReveal = '参考答案:' + item.blankAnswer;
    promptAction.showToast({ message: '再想想看~', duration: 1500 });
  }
}

这里的 normalize 会去掉空格、换行等干扰,让判断更贴近真实输入场景。

三、诗词配对:用小游戏降低学习门槛

诗词配对页面会随机打乱题目和选项,用户需要根据上句选择对应下句。每次回答后会给出 Toast 反馈,并统计正确与错误数量。

private pickOption(rowIdx: number, line: string): void {
  if (this.allDone || this.correctPerRow[rowIdx] !== null) {
    return;
  }

  this.selectedPerRow[rowIdx] = line;
  const item = this.items[rowIdx];

  if (line === item.correctLine) {
    this.correctPerRow[rowIdx] = true;
    this.rightCount = this.rightCount + 1;
    promptAction.showToast({ message: '回答正确 ♡', duration: 1200 });
  } else {
    this.wrongPerRow[rowIdx] = true;
    this.wrongCount = this.wrongCount + 1;
    promptAction.showToast({ message: '再想想看~', duration: 1200 });
  }
}

这种设计很适合碎片时间:用户不用进入长篇学习流程,只需要点选、反馈、再来一组,就能形成短周期正向激励。

四、朝代排序:把文学常识变成可操作任务

朝代排序页面要求用户按照生卒年代或朝代顺序排列诗人,使用上下按钮调整顺序。答错后页面展示解析。

private checkOrder(): void {
  const correct = DYNASTY_SORT_ROUNDS[this.roundIndex].correctNames;
  let ok = true;
  for (let i = 0; i < correct.length; i++) {
    if (this.order[i] !== correct[i]) {
      ok = false;
      break;
    }
  }
  this.showWrongAnalysis = !ok;
}

相比单纯展示“李白是唐代诗人”,排序任务更能让用户建立时间线认知。

五、可以继续扩展的创新点

当前项目已有的交互基础,可以继续扩展到更多 OpenHarmony 新体验:

  • 近场快传:把收藏诗词、学习卡片生成分享内容,在设备间快速传递。
  • 实况窗:展示“今日背诵任务进行中”“已连续学习 N 天”等状态。
  • 全场景智慧生活:把学习任务同步到平板、手机等多设备入口。
  • 元服务:把“每日一诗”“快速查字典”拆成更轻的服务入口。

总结

我认为学习类应用的创新体验,不一定要一开始就堆很多复杂能力。先把用户的学习行为拆清楚:读、背、写、练、查、复盘,再用 OpenHarmony 的状态管理、交互反馈和多端能力逐步增强,就能把一个内容型 App 做得更有参与感 🎯。

img

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐