android 项目练习:自己的词典app——生词本(一)

前言:

自学android差不多两个月了,由于本身对英语不感冒,而且记英语单词总是很快忘记,因此学习的过程也是蛮累的,好多类和方法都不知道啥意思,还要去查词典才知道。
还是延续我读书时的记忆方法——每次遇到生词就写在笔记本上,下次在遇到就算不记得中文意思,也能记得写过这个单词,然后就是找笔记本就可以了。不过那,这种方法也有个问题——自己的字太丑,每次都是找了好久都没找那个词,其实明明在哪里,只是快速扫看不到o(╯□╰)o。
后来,就想找一个背单词的app,可以把我不认识的生词添加到一个生词本,可以快速浏览生词本里的单词,也可以仅仅针对生词本里的词出一些帮助记忆的练习题?又想,既然我在学android,为什么不自己做一个那?于是就有了这个项目练习!

项目实现:

我在网上找到了一个前辈分享的类似的app编写过程,发现其中很多内容都是我会的,于是我就参考着自己动手写起来。
由于这个项目不是完成后才开始写这篇博客,是我边实践边写的,因此整体思路是根据我的写代码进度来的,在写这里的时候刚实现了查单词的界面和完整功能。

查词界面:

先来看下这个界面的功能和实现思路:
(一)肯定是要能查单词
简单的实现思路就是使用现有词典的API接口,我采用的是金山词霸的API接口,地址:http://open.iciba.com/。优点是这个接口会返回发音MP3的http地址。
查词接口:http://dict-co.iciba.com/api/dictionary.php?w=go&key=** 这里的key是你自己申请的金山词霸开放平台的API key。
打开后是这样的:

<dict num="219" id="219" name="219">
<key>go</key>
<ps>gəʊ</ps>
<pron>http://res.iciba.com/resource/amp3/0/0/34/d1/34d1f91fb2e514b8576fab1a75a89a6b.mp3</pron>
<ps>goʊ</ps>
<pron>http://res.iciba.com/resource/amp3/1/0/34/d1/34d1f91fb2e514b8576fab1a75a89a6b.mp3</pron>
<pos>vi.</pos><acceptation>走;离开;去做;进行;
</acceptation>
<pos>vt.</pos>
<acceptation>变得;发出…声音;成为;处于…状态;</acceptation>
<pos>n.</pos>
<acceptation>轮到的顺序;精力;干劲;尝试;</acceptation>
<sent><orig>
Go is an irregular verb.
</orig><trans>
go是个不规则动词.
</trans></sent><sent><orig>
Kyong - go means a warning or half - point deduction and gam - jeom means a one - point deduction.
</orig><trans>
Kyoug -go是指一次警告或被扣减半分, gam -jeom是指被扣减1分.
</trans></sent><sent><orig>
From the get - go means from the beginning.
</orig><trans>
原来fromtheget-go 就是一开始的时候.
</trans></sent><sent><orig>
With the reduction of SRWC, GO activity decreased mild water stress and increased water stress.
</orig><trans>
随着土壤相对含水量的下降,GO酶括性在土壤水分含量下降时首先降低,以后又逐渐上升.
</trans></sent><sent><orig>
We proved orthocompactness and weakly suborthocompactness are equivalent for all subspaces of product of two GO - space.
</orig><trans>
证明了GO - 空间子空间的正交紧性和弱子正交紧性是等价的.
</trans></sent></dict>

因此这里就要用到Http网络访问和XML解析。为避免重复访问网络,我们可以将解析出来单词的数据保存在本地,这样下次在查到该词是可以直接从本地读取了,同样的我们可以直接把MP3文件也保存本地。
分析完成后开始动手,首先按功能分模块,这方面由于我是新手,就是按照自己看的清晰的方式来,新建一个util包,这里都是放一些工具类。然后新建一个类HttpUtil,通过HttpURLConnection实现网络访问功能:

public class HttpUtil {
   
    /**
     * 在新线程中发送网络请求
     *
     * @param address  网络地址
     * @param listener HttpCallBackListener接口的实现类;
     *                 onFinish方法为访问成功后的回调方法;
     *                 onError为访问不成功时的回调方法
     */
    public static void sentHttpRequest(final String address, final HttpCallBackListener listener) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection connection = null;
                try {
                    URL url = new URL(address);
                    connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(8000);
                    connection.setReadTimeout(8000);
                    InputStream inputStream = connection.getInputStream();
                    if
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值