内容及要求:
1.设计一个成语字典APP,要求此APP能够在手机上准确的看到成语的释义,并且能正确跳转。
2.设计主要的显示页面布局。
3.实现成语字典中添加成语的功能,删除成语的功能。
4.在打开此APP后,点击退出按钮能够退出此应用软件。
5.此APP能够在电脑上实现运行,并且此程序能够运行出来。
目 录
1 题目要求................................................... 3
2 系统设计................................................... 3
2.1 功能模块设计1......................................... 3
2.2 功能模块设计2......................................... 4
3 运行结果分析............................................... 4
4 总结....................................................... 4
参考文献...................................................... 4
1 题目要求
简单成语字典
理解和熟悉成语字典的功能以及怎么实现其主要功能的。主要实现界面布局、新建、修改、删除成语的功能。
设计一个成语字典的APP,要求此APP能够在手机上准确显示成语的释义,并且能正确跳转。
设计主要的页面布局。
实现成语字典中添加成语的功能,删除成语的功能。
再打开此APP 后,点击退出按钮能够退出此应用程序。
此APP能够在电脑上实现运行,并且此程序能够运行出来。
1.1 功能模块设计1
描述本功能模块的设计,应包括
功能说明:
必要知识点:
首先要设计界面,作显示用的,如下图所示:
XML 代码如下所示:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.mycompany.myapplication.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="成语字典" android:textSize="38sp" android:gravity="center" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入成语:" android:textSize="25sp" /> <EditText android:id="@+id/edit_word" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="25sp" /> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开始查询" android:textSize="24dp" /> <TextView android:id="@+id/result" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" /> </LinearLayout> </RelativeLayout>
界面是用来显示输入的成语的,当输入成语后,界面跳转如下图所示:
界面是用来显示此成语相关信息(拼音、释义、引申、出处、同义、反义)的,当点击开始查询后,界面跳转如下图所示:
4.如果输入的不是成语或输入为空时,点击开始查询不会发生跳转。
1.2 功能模块设计2
在java中建立APP所要用到的类
MainActivity.java 代码:
package com.mycompany.myapplication; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.kymjs.rxvolley.RxVolley; import com.kymjs.rxvolley.client.HttpCallback; import com.mycompany.myapplication.R; import org.json.JSONException; import org.json.JSONObject; public class MainActivity extends AppCompatActivity { public static final String WORD_KEY = "07158adfcd1bf93c52e79f9026da5372";//在聚合数据里面申请的产品秘钥,拥有秘钥才能去访问这个网址 private EditText editword; private TextView result,result1,result2; private Handler handler; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initialize(); initData(); } private void initData() { button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { switch (view.getId()){ case R.id.button: final String edit_result=editword.getText().toString(); handler= new Handler() { @Override public void handleMessage(Message msg) {//handler加Thread组成异步线程访问网络 super.handleMessage(msg); switch (msg.what) { case 1: if (edit_result!=null) { String url= "http://v.juhe.cn/chengyu/query?key="+ WORD_KEY+"&word="+edit_result; RxVolley.get(url, new HttpCallback() { @Override public void onSuccess(String t) {//字符串是一个json格式的字符串,RxVolley是访问网络的一个框架,是添加的依赖 super.onSuccess(t); result.setText(parseJson(t)); } }); break; }else{ Toast.makeText(MainActivity.this, "输入的成语为空"+edit_result, Toast.LENGTH_SHORT).show(); } } } }; new Thread(){ @Override public void run() { super.run(); Message message=new Message(); message.what=1; handler.sendMessage(message); } }.start(); break; } } }); } private void initialize() { editword = (EditText) findViewById(R.id.edit_word); result = (TextView) findViewById(R.id.result); button= (Button) findViewById(R.id.button); } private String parseJson(String t) {//解析json字符串 String s=""; try { JSONObject jsonObject = new JSONObject(t); JSONObject result = jsonObject.getJSONObject("result"); String pinyin=result.getString("pinyin"); String chengyujs = result.getString("chengyujs"); String from_=result.getString("from_"); String yinzhengjs=result.getString("yinzhengjs"); s=chengyujs+from_+yinzhengjs; String tongyi = result.getString("tongyi"); // s=s+tongyi; s=chengyujs+from_+yinzhengjs+tongyi; String fanyi = result.getString("fanyi"); s=chengyujs+from_+yinzhengjs+tongyi+fanyi; //s=s+fanyi; //s=chengyujs; } catch (JSONException e) { e.printStackTrace(); } return s; }
2 运行结果分析
基本能够实现成语的输入、查询功能,能够查询成语的释义、出处、引申、引申释义、近义词、反义词,并且能显示出来。
3 总结
本次主要是制作一个小型、简易的成语词典,实现打开软件可以在AVD 模拟器上,手机上进行成语的查询的过程,然后点击返回键可以退出程序。
本次设计运用了Android.bat,AVD Manager.bat 模拟器等工具实现了成语词典的开发,在开发的过程中出现了一系列的问题,但我都虚心请教了同学,进行了一系列的改正。比如:
在第一次运行时出现了输入成语,但是没有释义出现的问题,经过检查发现没有引入网站接口,在同学的相关指导下,从聚合数据中引入了“String url= "http://v.juhe.cn/chengyu/query?key="+ WORD_KEY+"&word="+edit_result;”用于实现输入成语后开始查询的一个接口;
在验证时,由于导入包的方法错误,导致程序出现问题,但在上网查询了相关的百度经验后,又询问了同学,解决了这一问题。
在讲解的时候也出现了一些问题,比如:
在老师问返回格式是一个JSON 类型的还是一个文本的时候,我说了是文本的,实际上返回的是一个JSON 类型的;
第一次给老师检查的时候代码只能实现成语的释义的实现,第二次添加了新的代码,可以对成语实现查询此成语的释义、出处、引申、引申释义、近义词、反义词的实现。
参考文献
来自聚合数据:https://www.juhe.cn/docs
来自网址:http://Android.Googlesource.com
来自网址:http://hukai.me
来自网址:https://zhidao.baidu.com
来自网址:http://m.csdn.net/
来自网址:http://jingyan.baidu.com