7月中下旬一直在写手机安全卫士。由于我的开发能力不是很强, 导致在开发软件的过程中,经常是看两到三遍教程才能完成一个功能,不看视频教程就写不出代码。
考虑到求职的紧迫性、同时也为了更有效的提升编程能力,于7月30日开始写新的APP—–背单词软件。并于8月11日完成。
涉及的模块:
涉及功能:
·搜索单词
·删除词库
·重置学习进度
·学习单词
·复习单词
·测试
·生词本
一、搜索单词:
1.放置一个AutoCompleteTextView控件,当用户输入2个字母时,即自动从词库匹配结果
2.用户点击单词,进入详情页,显示单词的ID、拼写、释义、音标等属性。可以添加到生词本
思路: 通过一个Map集合存储单词数据的键值对<单词拼写,词库ID>
跳转到单词详情页面的同时,把词库ID和单词拼写传递到下一个Activity
在详情页通过点击“添加到生词本”,启动“添加单词”功能。 【sdb.insert()】
二、删除词库:
把当前选择的词库,存储到SharedPreference中,点击删除词库按钮,取出其中的数据。并 调用sdb.delete()删除
三、重置学习进度
四、学习单词功能:
通过Fragment分割成两个选项卡,分别显示全部的list和未学过的list,
点击listView进入详情页面 ,分别点击“上一个”和“下一个”进行切换。
考虑到能够实时更新list的状态,所以,将加载页面的操作写到onStart()方法中
未学过和已学过list的图标颜色不同
五、复习单词功能:
通过Fragment分割成两个选项卡,分别显示全部的list和该复习的list,
在全部的list中,存在3种状态:
1.未学习
2.暂不需复习
3.该复习了
规则:
·判断list是否需要复习
1.判断list是否学过,如果未学过,则不需要复习
2.如果list学过,判断其复习次数,如果为0,则计算当前日期与学习时间相隔天数。大于1天则需要复习
3.如果list学过,且复习次数1-4次,则计算当前日期与学习时间相隔天数,大于(2*复习次数+1)天,则需要复习
·3种状态的不同点击事件:
1.弹出对话框,跳转到学习页面
2.弹出对话框,询问“当前list并不需要复习,是否复习?”
3.弹出对话框,并跳转到复习页面
复习单词详情页:
思路:
按钮有2层,首先设置角标i = 0,长度length = 集合的长度
·当点击顶层的“我记得”,则隐藏的按钮:“记对了”、“记错了”将会显示出来。
·i不等于length
·如果点击记对了,则把当前的单词从ArrayList集合中删除
·如果点击记错了,则让i++,
·i等于length
·length为0
弹出对话框,并完成本次复习
·length不为0
则设置i=0,从集合第0位的单词重新开始复习,直到集合长度为0为止
·当点击顶层的“不记得了”,则隐藏的按钮:“下一个”将会显示出来。
思路和“记错了”按钮相同
六、测试功能:
测试详情页的思路:
用一个纵向的RadioGroup显示1个正确选项和3个随机的释义
思路:
1.获取所有单词的释义,并存入集合
2.获取正确的释义所在的index
3.随机获取3个不同数字,且每个数字都和指定的数字不同。
(1)randomLength = length/3-1 设置的是随机数的长度 [0-randomLength) 取随机数
(2)index = 0 ; 每次取出的随机数为 randomLength+1 [1-randomLength]
(3) index+=随机数
(4)把获取随机数的过程写入到while(true)中,如果index和指定的数字不同,则break;否则,继续执行获取随机数的操作。
4.把每一个数字对应的释义取出来,则形成了4个选项。
5.Collections.shuffle(ArrayList集合),则可以将集合中元素的顺序打乱
6.用户点击RadioGroup的时候,则判断是否为正确答案,如果是,则rightWord++;
7.当测试结束时,计算rightWord*100/单词总数,计算出准确率。
注意:当RadioGroup调用clearCheck()的时候,也会回调onCheckChangedListener()。
为了判断是否为用户点击而执行的监听方法。可以用一个布尔类型的flag来做标记
最近这几天发现开发效率有些低,准备写一个提高效率的Android软件。同时,也要抓紧找工作了~~~~求工作:):):)
版权声明:刚出锅的原创内容,希望对你有帮助~
原文地址:http://blog.csdn.net/liangyu2014/article/details/47442835