查看课表

课表标签页

这是 App 的主屏幕。你看到的内容取决于你当前有没有课表数据:

  • 还没有课表——显示一个引导页面,上面有"导入课表"和"手动添加"两个大按钮入口,以及一段简短的介绍文字说明 Sleepy 的基本功能
  • 有课表但还没有课程——显示一个空的周视图网格框架。顶部是星期标题(周一至周日),左侧是节次时间标签,中间是空的网格区域——等待你添加第一门课程。右下角的蓝色 + 按钮可以直接开始添加课程
  • 有课表且有课程数据——显示完整的周视图,彩色课程色块填充在对应的星期列和时间行位置

页面顶部有一个切换栏,包含两个选项:"周""网格",让你在两种不同风格的课表视图之间一键切换。底部的"今日"标签页则提供第三种专注于当天课程的查看方式。

周视图(默认视图)

这是打开 App 后的默认视图,也是信息最全的视图。界面分为三个区域:顶部是一排星期标题(周一、周二、周三、周四、周五、周六、周日),左侧是一列节次标签(第 1 节、第 2 节……按照作息时间表显示),中间占据主体的是一个由课程色块组成的网格。每个色块的位置精确对应这门课的星期和节次——周一第 1-2 节的课就在"周一"那一列、从第 1 节标签的高度开始、向下延伸到第 2 节标签的高度。

  • 左右滑动课表区域可以切换到上一周或下一周的课表。页面顶部标题栏会实时显示当前是第几周
  • 点按任意一个课程色块,会从屏幕底部弹出一个详情面板。面板上显示这门课的完整信息——课程名称、教师、教室、上课时间(按节次或按时钟显示)、周次范围、单双周类型、以及你填写的备注。面板底部有两个操作按钮:"编辑"(进入课程编辑页面修改任意信息)和"删除"(从课表中永久移除这门课,操作有确认对话框防止误删)
  • 长按课程色块直接跳转到这门课的编辑页面,省去弹出详情面板的中间步骤。在编辑页面中修改任何信息后点击保存,返回课表视图即可看到更新
  • 页面右上角有两个快捷按钮——左边的导入图标跳转到"导入课表"页面,右边的加号图标跳转到"手动添加课程"页面。这两个按钮让你不需要先切换到"管理"标签页就能快速执行导入或添加操作

网格视图

点击顶部切换栏中的"网格"切换到这种视图。网格视图采用类似 Google Calendar 或 iPhone 日历的时间网格布局——整个视图是一个 7 列(对应一周七天)× N 行(对应每天 N 个节次)的表格。每一行的高度固定为 52dp(在源代码中对应 CELL_H = 52.dp 常量)。

课程色块在网格中的垂直位置由其开始节次决定,高度由其跨越的节次数决定——只占一节的课程色块高度为一个单元格(52dp),跨两节的课高度为两个单元格加一行间距(约 106dp),看起来更加显眼。这种视觉上的比例差异帮助你一眼就能分辨出哪些课时间更长。

网格视图在底层使用 BoxWithConstraints 配合绝对 Modifier.offset() 定位来实现——每个课程色块的位置不是靠 Row 和 Column 的嵌套排列,而是通过精确的 X-Y 坐标数学计算得出。这种做法避免了 Compose 的自动布局系统在测量阶段把网格压扁的问题。课程色块中的文字大小会自动适配色块的可用空间——字号在 6sp 到 12sp 之间动态调整(对应 autoFitCourseFontSize 函数),确保即使是较长的课程名称也能完整显示而不会被截断为省略号。

今日视图

从底部导航栏点击"今日"标签页进入这个视图。它只显示今天要上的课程,按照上课时间从早到晚依次从上到下排列。这是每天早晨出门前最有用的视图——你不需要从整周的课表里找出今天有哪些课,打开"今日"标签一眼全部看清。

  • 每门课以列表项的形式呈现:左侧是一条纵向的细长颜色条(颜色和这门课在周视图中的色块颜色一致,作为视觉标识),右侧从上到下依次排列四行信息——课程名称(14sp 字号,加粗)、教师姓名(12sp,灰色)、教室编号(12sp,灰色)、上课时间(12sp,灰色,显示为"08:00-09:40"的格式)
  • 左右滑动可以查看昨天或明天的课程列表。页面顶部标题栏会显示对应的日期和星期几(例如"6 月 16 日 周一")
  • 如果今天没有课程(例如周末或者节假日),页面会显示一个友好的提示——"今天没有课"加上一个可爱的插图

查看和编辑课程详情

无论是在周视图、网格视图还是今日视图中,点按任意课程都会弹出一个底部详情面板,展示这门课的全部已填写信息。面板底部有两个操作按钮:"编辑"(跳转到课程编辑页面,所有字段预填了当前的数据,修改后点保存)和"删除"(从课表中移除这门课,操作前会弹出确认对话框)。在详情面板中你也可以看到这门课的所有时间段——如果这门课有多个时间块(比如理论课在周一、实验课在周三),它们会以列表形式全部显示在面板中。

下一步

了解了如何在 App 内查看课表之后,接下来把课表信息放到手机桌面上——请参阅桌面小组件