ToB企服应用市场:ToB评测及商务社交产业平台

标题: 安卓期末大作业——单词本APP(源码+任务书) [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2022-6-23 19:49
标题: 安卓期末大作业——单词本APP(源码+任务书)
计算机学院

项 目 报 告

2020 - 2021 学年 第 2 学期



课程名称: Android移动开发技术
项目名称: 单词本
学生姓名:
小组成员:

2021年 6 月
题目:单词本APP
1需求分析与系统设计

此项目是一个帮助记忆单词的单词本,用户输入要记忆的单词,系统会自动保存到sqllte数据库中,用户可以自行设置界面风格。设置单词记忆顺序等,可以查找单词,删除单词,以及隐藏中文。可以帮助用户更好的记忆单词。

















注:由于时间仓促,该部分的示意图以截图的形式替代。
1.4本程序需解决的有关技术问题
1. CardView 和 constraintLayout的布局切换
2.通过继承asyncTask实现多线程查询数据库
3.查询数据库过程中多个类的调用和封装解耦,模块化开发
4.通过livedate监听数据变化来改变视图显示。
5.如何通过滑动删除单词和如何改变单词位置
6.各个framgement之间的切换导航
1.5程序流程




5.通过Word 建立数据库表和映射关系。

2系统实现
2.1类分析与设计

(1)Word类:
1.这个这个类定义了单词条目的属性:id word chineseWord chineseInvisible 并同时映射到数据库对应的属性字段;
2.定义了set/get方法用于存取数据

(2)WordDao类:
1.dao层用注解定义了增删改查方法
对于复杂查询,再注解中定义了sql语句:
A.

B.模糊查询并按倒叙排序



(3)WordDatabase类:
1.利用单例工厂模式,new了一个WordDataBase类,这个类继承了RoomDatabase,建立了数据库,用来通过getDatabase来实例化WordDao

Static 可以不需要new 就可以调用方法
Synchronized同步块只有一个再执行,反正多线程而new了多个实例
此方法构建并返回一个wordDao。同时此方法中还包含数据库的升级及修改方法
(4)WordRepository类:
1.多线程调用WordDao的方法完成增删改查。

2.主要功能是实现多线程

(5)WordViewModel类:
1.通过调用WordRepository类的方法完成增删改查

2.主要功能是处理数据相关功能,返回的LiveData可以监控数据变化,并再变化时调用相应方法来处理视图等。

(6)MainActivity类:
1.设置了视图导航。

2.重写了返回键的方法

(7)AddFragment类:
1.定义了添加单词界面的功能
2.进入界面后,将输入框聚焦在英语输入框上,并弹出键盘。

3.点击添加按钮后,通过WordViewModel将数据写入数据库,并通过导航回到主界面

(8)MyAdapter类
1.通过点击单词条,用intent并传入一个网址可以跳到有道词典搜索

2.通过查询数据库ChineseInvisible字段,初始化设置是否显示中文释义

(9)WordFragment类
1搜索功能



2.在WordsFragment中设置了菜单功能,点击清空数据会弹出alertDialog对话框,若选择确认,则调用wordViewModel中的deleteAll()方法删除所以数据;点击切换视图时,会先在SharePreferences中获得现在时什么视图的值,然后调用recyclerView的方法设置另一个视图。



3.用onChildDraw画滑动后面的灰色阴影和垃圾桶图标

4.点击悬浮按钮跳到添加单词界面


5.移动单词和滑动删除单词功能


2.2 界面布局








2.3关键实现

1.在AddFramgent中,若输入框两个都不为空,设置添加按钮可用


2.在MyAdapter中,监听开关,若发生改变显示/隐藏中文释义,同时修改数据库中ChineseVisible字段的值。

3.在WordsFragment中设置了菜单功能,点击清空数据会弹出alertDialog对话框,若选择确认,则调用wordViewModel中的deleteAll()方法删除所以数据;点击切换视图时,会先在SharePreferences中获得现在时什么视图的值,然后调用recyclerView的方法设置另一个视图。



4.滑动删除后会弹出一个snackbar,点击即可撤销删除




5.onMove()方法处理长按拖动事件,发生拖动时,替换两个Word的id,livedate检测到数据发生改变,就重新绘画界面


3系统测试

3.1程序存在的问题
(1)再添加单词页面点击上方或下方的返回,键盘不会消失


解决方法:再AddFagment中button触发方法中添加键盘回缩方法:


(2)在添加单词页面中,没有自动聚焦到英语单词输入框
解决方法:再onActivityCreate中添加方法

(3)若长按拖动速度过快,会导致有些单词的中文意思会自动隐藏。
(4)列表界面单词之间的分界不够明显
解决方法 再每个列表条目上添加下划线。

3.2运行过程示例
(1)添加单词: ---单词添加成功




(2)删除单词: ---删除单词成功



(3)中文释义显示/隐层: -成功





(4)切换视图: -成功



(5)搜索功能: --成功



(6)点击单词后跳到有道词典搜索详细详细 --成功




4总结与建议
本课程学习了andorid的开发,经过本次项目,对android开发的整体把握更加清楚。
通过模块化开发,对每个类更加清楚,对liveData..SharePreference..navigation等类的使用和数据库的操作有了更加深入的理解。
https://download.csdn.net/download/qq_39154376/85355334https://download.csdn.net/download/qq_39154376/85355334

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4