安卓学习的一个小结。主要使用了Room、navigation导航等知识点。
小程序功能有:单词的添加、一键删除所有单词、切换卡片视图或普通视图、搜索单词并实时刷新单词列表、单词右滑或左滑删除。
1、数据库的设计及封装(room)
1、entity的设计
由于是简单的单词记录,所以表的设计并不复杂,只需要知道单词及其汉语意思即可,不过因为功能的需要,添加一个boolean来判断是否需要隐藏单词的汉语意思,以及每个表都需要的id。
1 | package com.example.roombasic; |
2、dao
由功能的需要可分析出,dao需要实现对entity的增加、删除、获取所有、根据条件获取相关单词、删除所有。
1 | package com.example.roombasic; |
3、database
获取dao的工具。
1 | package com.example.roombasic; |
4、repository
为了使用方便放入了entity的工厂,以供viewmodel使用。
1 | package com.example.roombasic; |
2、ViewModel
ViewModel来进行代码中的各种对数据的操作。
1 | package com.example.roombasic; |
3、界面的设计
1、单词列表界面
1、主界面
主界面:
- 界面中加入一个recylerView,是可滑动的列表。
- 加入一个floatingActionButton,用来跳转到单词添加界面。
2、菜单界面的设计
在res中添加menu资源,模板为:
搜索的item把属性设为:
2、单词添加界面
该界面比较简单。
3、卡片和普通列表视图
1、卡片视图
- switch组件的高为占满,宽用padding属性来占满,start 为 30dp,end 为 15dp。
- 在左侧的容器属性中,onclick设为true,背景设置为selectableItemBackground,波纹颜色。
- 层次为结构如图。
2、普通视图
与卡片视图设计相似,不过最外层去掉了cardView。
4、界面之间的navigation
4、主要逻辑代码
1、单词列表逻辑代码
1 | package com.example.roombasic; |
2、单词添加页面逻辑代码
1 | package com.example.roombasic; |
3、主进程页面逻辑代码
1 | package com.example.roombasic; |
4、适配器
这个主要是对recyclerView的处理。
1 | package com.example.roombasic; |