首页/新闻资讯/正文详情

HarmonyOS 应用开发《掌上英语》第45篇:首页布局重构——从课程列表到英语学习首页

发布时间:2026/11/3 17:22:54 来源:云帆数科 栏目:资讯中心
HarmonyOS 应用开发《掌上英语》第45篇:首页布局重构——从课程列表到英语学习首页
首页布局重构——从课程列表到英语学习首页一、首页的定位与模块概览首页是用户打开应用后看到的第一个界面。在英语学习 App 中首页需要同时满足快速开始学习和了解学习进展两个核心诉求。本项目的首页MainPage.ets位于features/homePage/src/main/ets/pages/MainPage.ets由 6 个 Builder 模块组成MainPage (Column) ├── topBarBuilder() → 顶部搜索栏 ├── todayStudyBuilder() → 今日学习卡 ├── swiperBuilder() → 轮播图 ├── functionBarBuilder() → 5 宫格功能入口 ├── practiceModeBuilder() → 2x2 练习模式 └── subjectPracticeBuilder() → 学习进度区二、模块详细分析2.1 顶部搜索栏topBarBuilderBuildertopBarBuilder(){Row(){// Logo 或标题Text(英语学习).fontSize(22).fontWeight(FontWeight.Bold);Blank();// 搜索图标Image($r(app.media.ic_search)).width(24).height(24);// 消息图标Image($r(app.media.ic_mic)).width(24).height(24);}.width(100%).padding({top:12,bottom:8});}搜索栏布局为 “标题 Blank 图标” 的左中右结构。Blank()组件自动填充中间空白区域将图标推到右侧。2.2 今日学习卡todayStudyBuilder今日学习卡展示用户当日的学习进展是本页最核心的信息模块BuildertodayStudyBuilder(){Column(){Row(){Column(){Text(今日学习).fontSize(16).fontWeight(FontWeight.Bold);Text(坚持学习成为更好的自己).fontSize(12).fontColor(Color.Gray);}.alignItems(HorizontalAlign.Start);Blank();// 学习进度圆环Progress({value:65,total:100,type:ProgressType.Ring}).width(50).height(50).color(#165DFF).style({strokeWidth:4});}.width(100%);// 今日目标进度条Progress({value:13,total:30,type:ProgressType.Linear}).width(100%).height(6).color(#165DFF);Text(今日已学 13/30 词).fontSize(11).fontColor(Color.Gray);}.padding(16).borderRadius(16).backgroundColor(Color.White);}学习卡使用Progress组件来可视化目标完成度环形进度展示总体完成率线性进度条显示具体的单词学习进度。2.3 轮播图swiperBuilder使用 ArkUI 的 Swiper 组件实现广告或功能推荐轮播BuilderswiperBuilder(){Swiper(){ForEach(this.bannerList,(item:BannerItem){Image(item.image).width(100%).aspectRatio(2.2).borderRadius(12);});}.autoPlay(true).interval(3000).indicator(true).loop(true);}Swiper 通过autoPlay开启自动轮播interval设置 3 秒切换间隔indicator显示底部导航点。2.4 5 宫格功能入口functionBarBuilder将核心功能以网格形式展示每个入口由图标 文字组成Localfunctions:CourseCoreBar[][newCourseCoreBar($r(app.media.ic_practice_camera),搜单词),newCourseCoreBar($r(app.media.ic__practice_wrong_question),易错词),newCourseCoreBar($r(app.media.ic_practice_star),生词本),newCourseCoreBar($r(app.media.ic_practice_notes),笔记),newCourseCoreBar($r(app.media.ic_chart_report),学习报告)];BuilderfunctionBarBuilder(){Grid(){ForEach(this.functions,(item:CourseCoreBar){GridItem(){Column(){Image(item.icon).width(32).height(32);Text(item.label).fontSize(12).margin({top:4});}}});}.columnsTemplate(1fr 1fr 1fr 1fr 1fr).rowsTemplate(1fr).columnsGap(8);}columnsTemplate(1fr 1fr 1fr 1fr 1fr)将 Grid 分为 5 等份每个 GridItem 占据一格形成经典的 5 宫格布局。2.5 2x2 练习模式practiceModeBuilder用 Grid 的 2 行 2 列展示练习模式入口比 5 宫格更开阔BuilderpracticeModeBuilder(){Grid(){ForEach(this.practiceModes,(item:PracticeMode){GridItem(){Column(){Text(item.title).fontSize(16).fontWeight(FontWeight.Bold);Text(item.desc).fontSize(12).fontColor(Color.Gray);}.padding(20).borderRadius(16).backgroundColor(item.color);}});}.columnsTemplate(1fr 1fr).rowsTemplate(1fr 1fr).rowsGap(12).columnsGap(12);}每个 GridItem 是一张带有背景色的卡片展示 CET-4 核心词汇、听力训练、阅读理解、语法练习四个入口。2.6 学习进度区subjectPracticeBuilder展示按学科分类的详细学习进度LocalcoursePractice:CourseQuestions[][newCourseQuestions(CET-4 核心词汇,120,300,85,2025-01-15 14:30),newCourseQuestions(CET-6 高频词汇,1024,3411,85,2025-01-15 14:30),// ...];每项展示已学题数/总题数、正确率、最后学习时间。三、整体布局分析build(){Column(){Flex({direction:FlexDirection.Column}){this.topBarBuilder();Scroll(){Column({space:10}){this.todayStudyBuilder();this.swiperBuilder();this.functionBarBuilder();this.practiceModeBuilder();this.subjectPracticeBuilder();Blank().layoutWeight(1);}}.scrollBar(BarState.Off).layoutWeight(1);};}.padding({left:16,right:16}).backgroundColor($r(sys.color.background_secondary)).width(100%).height(100%);}布局要点顶部搜索栏固定在顶部不随滚动移动内容区域用Scroll包裹处理内容超长时的滚动layoutWeight(1)让 Scroll 填充剩余高度统一使用space: 10控制模块间距整体使用Flex垂直布局固定顶部 滚动区域四、与课程列表首页的区别从课程列表到英语学习首页的本质变化对比维度课程列表首页英语学习首页核心目标浏览课程快速学习 查看进展布局结构列表 (List)卡片组合 (Card Grid)数据展示课程名称、价格学习进度、功能入口用户状态浏览者学习者有学习历史交互重心点击进入详情直接开始学习首页不再是商店货架式的课程陈列而是围绕今日学习展开的进度中心。每个模块都在引导用户进入学习状态这是英语学习 App 与教育 App 在设计理念上的关键区别。五、总结MainPage 的 6 个 Builder 模块展示了 ArkTS 强大的组件化能力。通过Builder装饰器将首页拆分为独立模块每个模块聚焦一个功能点既便于阅读和维护也为后续的个性化配置如用户自定义首页模块的排序奠定了基础。

相关推荐

智能对话系统中的上下文压缩技术实践
智能对话系统中的上下文压缩技术实践

1. 项目背景与核心挑战在智能对话系统开发中,上下文管理一直是困扰开发者的难题。随着对话轮次增加,上下文数据会像滚雪球一样膨胀,我们称之为"上下文爆炸"现象。这个问题在需要长期记忆的Agent场景中尤为突出——当对话超过100轮后… · 2026/9/4 11:53:38

HarmonyOS 应用开发《掌上英语》第44篇:错误边界与异常处理——ArkTS 的 try-catch 实践
HarmonyOS 应用开发《掌上英语》第44篇:错误边界与异常处理——ArkTS 的 try-catch 实践

错误边界与异常处理——ArkTS 的 try-catch 实践一、为什么需要显式异常处理 ArkTS 是静态类型语言,编译期可以捕获大部分类型错误。但运行时错误(网络 IO、文件访问、数据解析异常等)是编译期无法预见的。在这些场景下,不处理异常… · 2026/9/19 14:52:41

BG3ModManager:高效解决《博德之门3》模组加载冲突的智能管理方案
BG3ModManager:高效解决《博德之门3》模组加载冲突的智能管理方案

BG3ModManager:高效解决《博德之门3》模组加载冲突的智能管理方案 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 在《博德之门3》的丰富… · 2026/9/14 1:34:05

企业安全框架OpenClaw:动态智能防护体系解析
企业安全框架OpenClaw:动态智能防护体系解析

1. 项目概述"龙虾安全指南"是奇安信面向2026年企业安全需求推出的全新安全框架体系。这个代号"OpenClaw"的项目本质上是一套融合了新一代安全技术的企业级解决方案,其核心目标是通过"看得清、管得住、用得好"三大维度,帮助… · 2026/11/3 17:22:30

插电混动技术解析:比亚迪DM-i系统与市场优势
插电混动技术解析:比亚迪DM-i系统与市场优势

1. 插电混动技术为何成为市场新宠最近两年路上绿牌车明显多了起来,细心的朋友会发现其中不少是插电混动车型。这种"可油可电"的新能源车,正在以惊人的速度改变着我们的出行方式。作为从业十余年的汽车工程师,我亲眼见证了插混技术从… · 2026/11/3 17:22:30

从Claude Code到Pi:为什么开发者转向模型无关的开源AI代理框架?
从Claude Code到Pi:为什么开发者转向模型无关的开源AI代理框架?

最近开发群里聊得最多的一个话题,不是新框架,也不是新语言,而是:为什么越来越多人从 Claude Code 换到 Pi?这两个工具我都重度用过,Claude Code 用了将近一年,Pi 也跑了差不多三个月&#xff0c… · 2026/11/3 17:22:30

比亚迪DM-i插电混动技术解析与应用场景
比亚迪DM-i插电混动技术解析与应用场景

1. 插电混动技术的市场定位与用户需求在当下汽车动力技术路线中,插电混动(PHEV)凭借其独特的"可油可电"特性,正在成为越来越多消费者的折中选择。相比纯电动车,它消除了里程焦虑;相较传统燃油车&… · 2026/11/3 17:22:30

专业图床服务与CDN加速技术解析
专业图床服务与CDN加速技术解析

1. 为什么我们需要专业的图床服务作为一名技术博主,我深知图片加载速度对用户体验的影响有多大。去年我的个人博客就因为图片加载问题流失了近30%的移动端读者。当页面加载时间超过3秒时,53%的用户会选择离开——这是Google的研究数据。传统解决方案通常… · 2026/11/3 17:22:30

O(1)空间复杂度下寻找缺失数字的原地标记算法
O(1)空间复杂度下寻找缺失数字的原地标记算法

1. 问题背景与核心思路这个问题看起来简单,但隐藏着几个关键约束条件:我们需要在O(n)时间复杂度和O(1)额外空间复杂度下,找出1到n范围内缺失的数字。这意味着我们不能简单地使用哈希表等额外数据结构,而必须充分利用给定的数组本身… · 2026/11/3 17:21:30

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码