论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
移动端开发
›
安卓期末大作业——单词本APP(源码+任务书) ...
安卓期末大作业——单词本APP(源码+任务书)
用多少眼泪才能让你相信
金牌会员
|
2022-6-23 19:49:50
|
显示全部楼层
|
阅读模式
楼主
主题
803
|
帖子
803
|
积分
2409
计算机学院
项 目 报 告
2020 - 2021 学年 第 2 学期
课程名称:
Android移动开发技术
项目名称: 单词本
学生姓名:
小组成员:
2021年 6 月
题目:单词本APP
1需求分析与系统设计
项目介绍
此项目是一个帮助记忆单词的单词本,用户输入要记忆的单词,系统会自动保存到sqllte数据库中,用户可以自行设置界面风格。设置单词记忆顺序等,可以查找单词,删除单词,以及隐藏中文。可以帮助用户更好的记忆单词。
功能需求
单词本可以通过用户输入中英文,来实现单词的添加。
用户可以随意开关某个单词的中文释义
用户可以删除已经添加的单词
用户关机或者退出应用不会导致单词本内的单词丢失
用户可以自定义单词本中单词的顺序
可以选择自己喜欢的界面风格
用户可以快捷的查找某个单词在有道上的详细信息
用户可以查找某个单词
功能需求及示意图
用户点击加号按钮输入单词,键盘会自动弹出并焦点在输入框,用户输入英文和中文释义,单词本上将在最上面显示这个单词,并会有下拉动画。用户可以通过上方放回箭头取消输入。
用户可以通过单词盘边的按钮来关闭或开启中文意思
向右滑可以删除单词,同时底部有提示信息,可以撤销删除,点击撤销可以还原被删除的单词
长按拖住上下滑动可以设置单词的优先级
搜索可以搜索相关的单词
菜单可以选择切换界面或者删除全部单词,将以卡片/列表显示单词
注:由于时间仓促,该部分的示意图以截图的形式替代。
1.4本程序需解决的有关技术问题
1. CardView 和 constraintLayout的布局切换
2.通过继承asyncTask实现多线程查询数据库
3.查询数据库过程中多个类的调用和封装解耦,模块化开发
4.通过livedate监听数据变化来改变视图显示。
5.如何通过滑动删除单词和如何改变单词位置
6.各个framgement之间的切换导航
1.5程序流程
程序启动后先通过MainActivity的onCreate方法
进入wordsFramgment类,通过MyAdaper new出单词列表
当通过监听WordViewModel发现数据发生改变时,会同时增删改单词列表条数
对数据改变的方法通过WordViewModel类中的方法调用WordReposity中的方法再调用WordDatabase或WordDao中的方法进行增删改或者查询
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)列表界面单词之间的分界不够明显
解决方法 再每个列表条目上添加下划线。
在部分手机版本中会出现搜索后单词丢失bug;
3.2运行过程示例
(1)添加单词
: ---单词添加成功
(2)
删除单词
: ---删除单词成功
(3)中文释义显示/隐层:
-成功
(4)切换视图
: -成功
(5)
搜索功能
: --成功
(6)点击单词后跳到有道词典搜索详细详细
--成功
4总结与建议
本课程学习了andorid的开发,经过本次项目,对android开发的整体把握更加清楚。
通过模块化开发,对每个类更加清楚,对liveData..SharePreference..navigation等类的使用和数据库的操作有了更加深入的理解。
https://download.csdn.net/download/qq_39154376/85355334
https://download.csdn.net/download/qq_39154376/85355334
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
用多少眼泪才能让你相信
金牌会员
这个人很懒什么都没写!
楼主热帖
杭州联合银行 x 袋鼠云:打造智能标签 ...
iNeuOS工业互联网操作系统,增加搜索应 ...
【Java开源数据库语言】基于SPL如何提 ...
真正在大厂干了几年,我学会了反内卷[ ...
攻防世界 new_easypwn 题解
个人博客系统(附源码)
ssrf实战
vue3+Element采用递归调用封装导航栏 ...
内网安全 - 简单域环境搭建
高斯数据库gaussDB(DWS),全网首篇对 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表