[toc]
课程作业
-
修改配色
-
增加上课时间
-
细节优化
-
核心**:
- 左右两个碎片
- 左侧碎片:绑定一个ListView,根据点击,确定当前是显示周几的内容
- 右侧碎片:绑定一个空布局,根据一天**有几节课,动态添加控件显示课程信息
- 当左侧点击使当前日变化时,右侧父布局清空控件,重新动态添加控件
- 数据:
- SharedPreferences中:用户新建课程但终端,信息作为临时信息保存
- SQLite中:表Curriculum记录所有课程信息(名称、教室、教师);表BasicInfo记录课程时间
- 左右两个碎片
-
实现思路(代码过程):
- 基本的设置:今天是周几、使用ListView填充左侧碎片、打开SQLite和SharedPreferences等
- 从SQLite中判断是否设置过每天课程总数:
- 无:调用DialogFragment,获取每天课程总数
- 有:从库中获取课程总数
- 利用课程总数num,动态填充右侧碎片(有num个课程框)
- 填充过程中,利用id判断库中是否有本节课程信息,并将课程信息传入,显示在右侧; 对于有课程信息但非必填项为空的信息,设置控件GONE,以保证显示内容的紧凑
- 对右侧课程框的点击:调用DialogFragment,将获取的数据填入TextView,数据情况:
- 若课程框原本有内容(即课程信息已存在)
- 确定:意图为修改课程信息,判断内容是否改变后执行SQL语句修改表项
- 取消:意图为修改课程信息中断,不做处理
- 删除:意图为删除本课程,执行SQL语句删除表项
- 若课程框无内容(即库中无课程信息)
- 确定:意图为新增课程信息,判断课程名不为空后执行SQL语句新建表项
- 取消:意图为新增课程信息中断,将临时数据存入SharedPreferences中
- 若课程框原本有内容(即课程信息已存在)
- 重设数据按键:清空SharedPreferences内容和SQLite表项,并重启应用
- 设置时间按键:新活动,使用TimePickerDialog设置时间,并保存进SQLite
新增周数记录功能
记录总周数、本学期哪年开始、本学期在该年的第几周开始。
今年开始:当前学期周 = 当前自然周 - 学期开始周 + 1
去年开始:当前学期周 = 去年总周数 - 学期开始周 + 1 + 当前自然周
- 课程卡片调整:增加两个图标入口
- 设置:代替以前的点击卡片
- 便签:添加作业/计划(待办),
- 新增便签功能:
- 文字/待办:
- 可点击○表示完成,图标会变化,对应文本会出现删除线:ImageView+EditText,``setPaintFlags`
- 回车,当前项后插入新项:获取当前焦点,数个
getParent()
获得整个文字项(此处需要强制转换),父布局.addView(新项, index+1)
- 删除:监听删除键,判断光标处于最左,获取位置index后
removeView()
,之后上方的文字项获得焦点
- 录音:
- 录音,点击录音图标,开始录音,再次点击结束录音。在当前焦点之后,或整个便签末尾增加一个录音项:以时间作为文件名,生成录音文件(
createNewFile()
前要先mkdirs()
一个新的目录,createTempFile()
会在文件名后缀一串随机数以防文件重复/已存在,故采用createNewFile()
);使用MediaRecord录音,设置顺序很重要 - 播放,点击录音项里的声音图标,开始播放;再次点击,暂停播放:使用MediaRecord播放与暂停
- 录音,点击录音图标,开始录音,再次点击结束录音。在当前焦点之后,或整个便签末尾增加一个录音项:以时间作为文件名,生成录音文件(
- 图片
- 点击图片键,启动相册,选择图片,生成图片项:使用intent启动相册;在当前焦点或末尾增加图片项
- 点击放大图标,图片放大,再次点击缩小:图片项内含两个ImageView,随着点击,两个交替GONE与VISIBLE
- 文字/待办:
- 数据库调整:删除TimeInfo表,并入Settings表
- 细节优化
- id:主键,自增;三位,星期(1)+当天课程序号(2)
- teacher:text,记录教师名
- location:text,记录教室
- name:text,记录课程名
- id:主键,自增
- course_id:以课程号分类
- type:note、record、image 以三种便签内容分类
- content:edittext、path、path 分别对应的内容
- 数据库2.0ver:加入Notes表
- 组成
- id:主键自增
- type: text
- keys: text
- value: text
- 周数存储:
- type: week_num
- 总周数:keys = week_sum
- 当前周:用于计算当前是本学期第几周
- keys:start_year 本学期哪年开始
- keys:start_week_of_year 本学期在该年的第几周开始
- 今年开始:当前学期周 = 当前自然周 - 学期开始周 + 1
- 去年开始,当前学期周 = 去年总周数 - 学期开始周 + 1 + 当前自然周
- 时间存储:库2.0ver中删除TImeInfo表,并入Settings表。
- keys:time+i
- type: start_time
课前提醒与其开关