鸿蒙掌上驾考宝典应用开发15:答题交互组件——Exam 与 SelectComponent 全解析
第15篇答题交互组件——Exam 与 SelectComponent 全解析一、引言答题交互是驾考应用最核心的用户交互场景。DriverLicenseExam 项目的Exam组件和SelectComponent组件共同实现了完整的答题交互体验包括试题展示、选项选择、答案判断、答题卡、倒计时等。本文将深入解析这两个组件的实现。二、Exam 组件架构2.1 组件职责Exam 组件是考试页面的核心容器负责管理试题列表Swiper 滑动切换展示倒计时模拟考试管理答题卡浮层处理模拟考试结束弹窗2.2 组件接口// components/exam/src/main/ets/components/Exam.etsEntryComponentV2 export struct Exam {ParamRequireappPathStack: NavPathStack;// 路由栈ParamRequireexamManager: ExamManager;// 试卷数据ParammockExamCall: (score: number) void (score: number) {};// 模拟考试回调private examController: ExamController ExamController.instance;LocalremainTime: number 0;// 剩余时间LocalisShowProblemListSheet: boolean false;// 答题卡显示LocalcurrentIndex: number 0;// 当前第几题LocalisStop: boolean false;// 暂停状态private readonly renderWindowSize: number 2;// 渲染窗口大小}三、答题交互流程3.1 试题渲染build(){Column(){// 模拟考试倒计时this.showRemainTime();// 试题列表Swiper 滑动切换Swiper(examController.swiperController){ForEach(this.examManager.examDetails, (item: ExamDetail,examIndex:number) {Column({space: 12 }){if(this.shouldRenderQuestion(examIndex)) { SelectComponent({item: item,changeCorrectNum: (isAdd: boolean) {isAdd ? this.examManager.correctNumber: this.examManager.correctNumber--;},}); } } }); } // ... 底部导航答题卡、上一题、下一题 } }3.2 渲染窗口优化// 只渲染当前题附近的题目提高大题库性能privatereadonlyrenderWindowSize:number2;shouldRenderQuestion(examIndex:number):boolean{returnMath.abs(examIndex -this.currentIndex) this.renderWindowSize; }四、模拟考试倒计时4.1 倒计时实现aboutToAppear(): void {this.currentIndex this.examManager.currentQuestionId 1;if(this.examManager.timeLimit !0) {this.remainTime this.examManager.timeLimit *60; let showDialog: boolean true; setInterval(() {if(showDialog !this.isStop) {if(this.remainTime 1) {this.remainTime--; }else{ showDialog false;this.isStop true;this.examSubmitDialog.open(); } } },1000); } }4.2 时间格式化BuildershowRemainTime() {if(this.examManager.timeLimit!0) {Row() {Image($r(app.media.ic_time)).width(16).height(16);Text(${Math.floor(this.remainTime /60)}:${String(this.remainTime %60).padStart(2,0)}) .fontSize(14) .fontColor(#FF6B6B); } } }五、答题卡实现5.1 答题卡数据// 生成答题卡数据getanswerCardData() {returnthis.examManager.examDetails.map((item, index) ({index: index 1,status: item.isCorrectundefined?unanswered: item.isCorrect?correct:wrong,isCurrent: index this.currentIndex})); }5.2 答题卡交互// 底部打开答题卡浮层Button(答题卡) .onClick(() {this.isShowProblemListSheet true; }) .bindSheet($$this.isShowProblemListSheet,this.answerCardSheet(), { height:400, title: { title:答题卡}, });六、总结Exam 和 SelectComponent 组件的设计体现了 ArkUI 组件化的最佳实践职责分离Exam 管理流程SelectComponent 管理交互性能优化渲染窗口机制减少不必要的渲染状态管理Local 管理内部状态Param 接收外部数据用户体验倒计时、答题卡、弹窗等交互细节关键源码文件components/exam/src/main/ets/components/Exam.ets— 考试主组件components/exam/src/main/ets/components/SelectComponent.ets— 选择组件components/exam/src/main/ets/controller/ExamController.ets— 考试控制器

相关新闻

关闭explorer.exe 进程,导致电脑黑屏

关闭explorer.exe 进程,导致电脑黑屏

首先别担心,这其实是一个常见的小问题,黑屏是因为电脑的“桌面管家”(explorer.exe 进程)被你手动关掉了,它本身并不会对电脑造成损坏。我们只需要通过键盘操作,把它重新“唤醒”就好。这里有几种方法&…

2026/7/31 14:32:06阅读更多 →
Spring AI框架实战:智能对话系统开发指南

Spring AI框架实战:智能对话系统开发指南

1. Spring AI:当传统框架遇上智能时代 第一次听说Spring AI这个项目时,我正为一个客户的老旧Spring Boot系统发愁。他们想要在不重构整个架构的前提下,为现有业务添加智能对话和数据分析能力。当时市面上大多数AI解决方案都需要复杂的对接流程…

2026/7/31 14:32:06阅读更多 →
PoeCharm:中文玩家的《流放之路》角色构建终极指南

PoeCharm:中文玩家的《流放之路》角色构建终极指南

PoeCharm:中文玩家的《流放之路》角色构建终极指南 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 还在为《流放之路》复杂的英文界面而烦恼吗?面对原版Path of Building的专…

2026/7/31 14:32:06阅读更多 →
Windows热键侦探:快速定位被占用快捷键的完整指南

Windows热键侦探:快速定位被占用快捷键的完整指南

Windows热键侦探:快速定位被占用快捷键的完整指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经遇…

2026/7/31 15:44:41阅读更多 →
如何轻松解决Navicat试用期限制:5种高效重置方法详解

如何轻松解决Navicat试用期限制:5种高效重置方法详解

如何轻松解决Navicat试用期限制:5种高效重置方法详解 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navic…

2026/7/31 15:44:41阅读更多 →
API中转站做备用通道:主接口异常时如何减少业务中断

API中转站做备用通道:主接口异常时如何减少业务中断

在真实业务里,备用通道并不是一个孤立动作,而是一组连续任务。很多团队刚开始只想通过模型完成某个小功能,例如生成一段内容、整理一份资料、分类一批数据,或者辅助某个成员提高效率。但当任务进入日常运行后,大家会发…

2026/7/31 15:44:41阅读更多 →
专科生论文写作利器:9款AI工具实测推荐

专科生论文写作利器:9款AI工具实测推荐

1. 项目概述作为一名经历过论文写作煎熬的过来人,我深知专科生在毕业论文写作过程中面临的困境。从选题迷茫到格式混乱,从文献匮乏到查重焦虑,每个环节都可能成为压垮骆驼的最后一根稻草。最近我花了三周时间,系统测试了市面上主流…

2026/7/31 15:44:41阅读更多 →
基于ACM数字图书馆的检索增强生成系统构建与实践

基于ACM数字图书馆的检索增强生成系统构建与实践

大型语言模型(LLMs)如 ChatGPT 在代码生成、技术问答和文档理解方面展现出强大能力,但它们在处理专业学术资源时仍面临显著挑战。ACM 数字图书馆作为计算机科学领域最权威的学术资源库,包含大量论文、会议记录和技术报告&#xff…

2026/7/31 15:44:41阅读更多 →
直流照明|城市非机动车道低碳安全照明解决方案

直流照明|城市非机动车道低碳安全照明解决方案

一.系统概述城市非机动车道、人行绿道是市民日常通勤、慢行休闲的核心场景,具有人流量大、夜间通行频次高、紧邻绿化积水区域等特点。现阶段多数非机动车道沿用传统交流路灯,存在低压区照度不足、雨天漏电隐患、整夜常亮能耗浪费、无法适配行人车流变化等…

2026/7/31 15:42:41阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/31 5:08:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →