Skip to content

gaylong9/CurriculumApp

Repository files navigation

[toc]

CurriculumApp

课程作业

1.3ver

  • 修改配色

  • 增加上课时间

  • 细节优化

  • 核心思想:

    1. 左右两个碎片
      1. 左侧碎片:绑定一个ListView,根据点击,确定当前是显示周几的内容
      2. 右侧碎片:绑定一个空布局,根据一天中共有几节课,动态添加控件显示课程信息
    2. 当左侧点击使当前日变化时,右侧父布局清空控件,重新动态添加控件
    3. 数据:
      1. SharedPreferences中:用户新建课程但终端,信息作为临时信息保存
      2. SQLite中:表Curriculum记录所有课程信息(名称、教室、教师);表BasicInfo记录课程时间
  • 实现思路(代码过程):

    1. 基本的设置:今天是周几、使用ListView填充左侧碎片、打开SQLite和SharedPreferences等
    2. 从SQLite中判断是否设置过每天课程总数:
      1. 无:调用DialogFragment,获取每天课程总数
      2. 有:从库中获取课程总数
    3. 利用课程总数num,动态填充右侧碎片(有num个课程框)
    4. 填充过程中,利用id判断库中是否有本节课程信息,并将课程信息传入,显示在右侧; 对于有课程信息但非必填项为空的信息,设置控件GONE,以保证显示内容的紧凑
    5. 对右侧课程框的点击:调用DialogFragment,将获取的数据填入TextView,数据情况:
      1. 若课程框原本有内容(即课程信息已存在)
        1. 确定:意图为修改课程信息,判断内容是否改变后执行SQL语句修改表项
        2. 取消:意图为修改课程信息中断,不做处理
        3. 删除:意图为删除本课程,执行SQL语句删除表项
      2. 若课程框无内容(即库中无课程信息)
        1. 确定:意图为新增课程信息,判断课程名不为空后执行SQL语句新建表项
        2. 取消:意图为新增课程信息中断,将临时数据存入SharedPreferences中
    6. 重设数据按键:清空SharedPreferences内容和SQLite表项,并重启应用
    7. 设置时间按键:新活动,使用TimePickerDialog设置时间,并保存进SQLite

2.0ver

新增周数记录功能

记录总周数、本学期哪年开始、本学期在该年的第几周开始。

今年开始:当前学期周 = 当前自然周 - 学期开始周 + 1

去年开始:当前学期周 = 去年总周数 - 学期开始周 + 1 + 当前自然周


3.0ver

  1. 课程卡片调整:增加两个图标入口
    1. 设置:代替以前的点击卡片
    2. 便签:添加作业/计划(待办),
  2. 新增便签功能:
    1. 文字/待办:
      1. 可点击○表示完成,图标会变化,对应文本会出现删除线:ImageView+EditText,``setPaintFlags`
      2. 回车,当前项后插入新项:获取当前焦点,数个getParent()获得整个文字项(此处需要强制转换),父布局.addView(新项, index+1)
      3. 删除:监听删除键,判断光标处于最左,获取位置index后removeView(),之后上方的文字项获得焦点
    2. 录音:
      1. 录音,点击录音图标,开始录音,再次点击结束录音。在当前焦点之后,或整个便签末尾增加一个录音项:以时间作为文件名,生成录音文件(createNewFile()前要先mkdirs()一个新的目录,createTempFile()会在文件名后缀一串随机数以防文件重复/已存在,故采用createNewFile());使用MediaRecord录音,设置顺序很重要
      2. 播放,点击录音项里的声音图标,开始播放;再次点击,暂停播放:使用MediaRecord播放与暂停
    3. 图片
      1. 点击图片键,启动相册,选择图片,生成图片项:使用intent启动相册;在当前焦点或末尾增加图片项
      2. 点击放大图标,图片放大,再次点击缩小:图片项内含两个ImageView,随着点击,两个交替GONE与VISIBLE
  3. 数据库调整:删除TimeInfo表,并入Settings表
  4. 细节优化

数据库

Curriculum表:

  1. id:主键,自增;三位,星期(1)+当天课程序号(2)
  2. teacher:text,记录教师名
  3. location:text,记录教室
  4. name:text,记录课程名

Notes表:

  1. id:主键,自增
  2. course_id:以课程号分类
  3. type:note、record、image 以三种便签内容分类
  4. content:edittext、path、path 分别对应的内容
  5. 数据库2.0ver:加入Notes表

Settings表:

  1. 组成
    1. id:主键自增
    2. type: text
    3. keys: text
    4. value: text
  2. 周数存储:
    1. type: week_num
    2. 总周数:keys = week_sum
    3. 当前周:用于计算当前是本学期第几周
      1. keys:start_year 本学期哪年开始
      2. keys:start_week_of_year 本学期在该年的第几周开始
      3. 今年开始:当前学期周 = 当前自然周 - 学期开始周 + 1
      4. 去年开始,当前学期周 = 去年总周数 - 学期开始周 + 1 + 当前自然周
  3. 时间存储:库2.0ver中删除TImeInfo表,并入Settings表。
    1. keys:time+i
    2. type: start_time

待做

课前提醒与其开关