『中工开发者』鸿蒙——日历APP
maomao茂
发布于 2024-12-6 21:15
浏览
1收藏
日历 app 是我们每个人都离不开的手机 app,它能帮我实现日程添加、日期计算、农历查看等功能。所以,本次期末软件设计我选择开发实现日历 app,复现现有 app 的基本功能。
介绍
- 日期展示功能(公历、农历):主界面显示当月所有日期的数字以及对应的农历。
- 日历切换:左滑右滑日历进行日历切换。
- 日期跳转:点击“三角”图标弹出日期选择器,选择对应年月后
进行日期跳转。 - 当日标注:显示时,如果是今天,日期会用不同颜色显示。
- 日期间隔计算:选中日期后界面自动显示当前日期与选中日期的间隔。
- 日程新增:选中相应的日期后,点击“+”图标,弹出对话框新建日程。
- 日程提醒:后台在设置日期提醒用户设置的日程。
开发和运行环境
- 开发平台:ArkTS 编程语言。
- 开发工具:DevEco Studio 64 位。
- 运行平台:原则上可在支持鸿蒙操作系统的所有终端上使用。
- 第三方组件:公历转农历算法来自 chinese-lunar 库。
- 支持软件运行的条件:部分功能需要用户给予网络权限。
项目结构
项目展示
日程新增、显示、编辑
日程模糊搜索、日程删除
日期跳转、日历侧滑切换
日期详情页、加载动画、网络请求失败提示并自动返回
日程提醒、点击提醒打开页面
项目解析
Lunar.ets
该类主要实现通过公历日期,如:2023-12-05转换成农历日期,即:十月廿三。除此之外,还有获得传统干支纪年,如癸卯年、生肖,如 2023年为兔年。下面展示主要源代码:
dateModel.ets
该类主要是定义了 date数据结构,包含 isSelected(是否被选中)、isToday(是否是今天)、date(Date类型,日期)、weekDay(一周的第几天)、lunarmonth(农历月)、lunarday(农历日)成员属性等,为了加快页面显示速度,这里只设置了少量的成员属性,其他信息等到需要时在进行计算。源代码展示:
ScheduleData.ets
该类主要是对日程 schedule数据结构进行定义,包括:id、title、date、year、day、note(备注)成员属性。
LoadingDialog.ets & dialog.ets
- LoadingDialog:由于日期详情页是使用 request进行数据请求,页面显示不及时,添加加载动画使页面衔接更自然。
- dialog:该类是用于用户新建日程时弹出的表单对话框,对话框显示表单比页面直接显示更自然。这里不作代码展示。
index.ets
日历首页。(由于篇幅限制,这里介绍部分功能。)
- 使用手势实现 tab切换:
由于 tab自带的切换模式不支持循环滑动,使用手势结合changeIndex接口实现循环 tab切换。
- 日期间隔计算:通过 Date的 getTime接口实现计算,最后通过双目运算符实现几天前、几天后、今天、明天、昨天显示。
- 添加日程提醒:通过添加后台代理提醒,在特定时刻通知用户。
- 日程表、日程数据插入、删除、更新不作展示,原理同实验三。
SearchPage.ets&morePage.ets - SearchPage.ets:该界面实现搜索结果显示。
- morePage.ets:该界面实现详情展示,通过查询到的获取黄历api,根据页面跳转时传过来的日期,使用 request进行数据求,并在请求失败后返回原页面。
赞
1
收藏 1
回复
1
1
1
相关推荐
菜鸟疑问:
鸿蒙里面没有日历组件吗?
为什么不能直接调用,要自己写一个?