关于百度词典API的说明,地址在这里:百度词典API介绍

  关于android网络库Volley的介绍说明,地址在这里:Android网络通信库Volley

  首先我们看下大体的界面布局!

  

  再帖张最终的效果图

  

  看到效果图,应该知道布局很简单了对吧:

  布局xml文件如下:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:paddingBottom="@dimen/activity_vertical_margin"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. tools:context="com.example.dict.MainActivity" >
  11.  
  12. <LinearLayout
  13. android:orientation="horizontal"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. >
  17.  
  18. <Button
  19. android:layout_width="0dp"
  20. android:layout_height="wrap_content"
  21. android:layout_weight="1"
  22. android:text="Clear"
  23. android:onClick="clearHandler"
  24. android:padding="7dip"
  25. />
  26. <EditText
  27. android:id="@+id/etWord"
  28. android:singleLine="true"
  29. android:layout_width="0dp"
  30. android:layout_height="wrap_content"
  31. android:layout_weight="2"
  32. android:background="@android:drawable/edit_text"
  33. />
  34. <Button
  35. android:layout_width="0dp"
  36. android:layout_height="wrap_content"
  37. android:layout_weight="1"
  38. android:text="Query"
  39. android:onClick="queryHandler"
  40. android:padding="7dip"
  41. />
  42. </LinearLayout>
  43. <TextView
  44. android:id="@+id/tvResult"
  45. android:layout_width="fill_parent"
  46. android:layout_height="fill_parent"
  47. android:hint="result"
  48. />
  49.  
  50. </LinearLayout>

  然后就是几个事件的处理,

  1: Clear按钮的处理: 清理掉输入框里面的内容

  2: Query按钮的处理:

    1:利用百度词典API获取内容

    2:解析返回的json数据,处理并且显示在下面的TextView空间中,

    3:取消软键盘的显示

  代码如下:

  1. package com.example.dict;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5.  
  6. import org.json.JSONArray;
  7. import org.json.JSONObject;
  8.  
  9. import com.android.volley.Request;
  10. import com.android.volley.RequestQueue;
  11. import com.android.volley.Response;
  12. import com.android.volley.VolleyError;
  13. import com.android.volley.toolbox.StringRequest;
  14. import com.android.volley.toolbox.Volley;
  15.  
  16. import android.support.v7.app.ActionBarActivity;
  17. import android.content.Context;
  18. import android.os.Bundle;
  19. import android.view.View;
  20. import android.view.inputmethod.InputMethodManager;
  21. import android.widget.EditText;
  22. import android.widget.TextView;
  23.  
  24. public class MainActivity extends ActionBarActivity
  25. {
  26.  
  27. private String url = "http://openapi.baidu.com/public/2.0/translate/dict/simple?client_id=5kHZHeo8MN7L6NmPTGV6POsb&q=@word&from=en&to=zh";
  28.  
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.activity_main);
  33. }
  34.  
  35. public void clearHandler(View view)
  36. {
  37. EditText text = (EditText)findViewById(R.id.etWord);
  38. text.setText("");
  39. }
  40.  
  41. public void queryHandler(View view)
  42. {
  43. EditText text = (EditText)findViewById(R.id.etWord);
  44. if(text.getText().length() <= 0)
  45. {
  46. return ;
  47. }
  48.  
  49. RequestQueue requestQueue = Volley.newRequestQueue(this);
  50.  
  51. String tempUrl = this.url.replace("@word",text.getText().toString());
  52.  
  53. StringRequest postRequest = new StringRequest(Request.Method.GET,tempUrl,
  54. new Response.Listener<String>()
  55. {
  56. @Override
  57. public void onResponse(String response)
  58. {
  59. MainActivity.this.parseResult(response);
  60. }
  61. },
  62. new Response.ErrorListener()
  63. {
  64. @Override
  65. public void onErrorResponse(VolleyError error)
  66. {
  67.  
  68. }
  69. })
  70. {
  71. @Override
  72. protected Map<String,String> getParams()
  73. {
  74. Map<String,String> params = new HashMap<String,String>();
  75. return params;
  76. }};
  77. requestQueue.add(postRequest);
  78. }
  79.  
  80. public void parseResult(String source)
  81. {
  82. try
  83. {
  84.  
  85. final TextView display = (TextView)findViewById(R.id.tvResult);
  86. display.setText("");
  87.  
  88. InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  89. if (imm.isActive())
  90. {
  91. imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);
  92. }
  93.  
  94. JSONObject obj = new JSONObject(source);
  95. JSONObject data = obj.getJSONObject("data");
  96. JSONArray symbols = data.getJSONArray("symbols");
  97.  
  98. for(int i=0;i<symbols.length();i++)
  99. {
  100. JSONObject parts = symbols.getJSONObject(i);
  101.  
  102. for(int j=0;j < parts.getJSONArray("parts").length();j++)
  103. {
  104. JSONObject item = parts.getJSONArray("parts").getJSONObject(j);
  105. display.append(item.getString("part"));
  106. display.append("\n");
  107. JSONArray arr = item.getJSONArray("means");
  108.  
  109. for(int k=0;k<arr.length();k++)
  110. {
  111. display.append(" " + arr.getString(k));
  112. display.append("\n");
  113. }
  114. }
  115. }
  116. }
  117. catch (Exception e)
  118. {
  119.  
  120. }
  121. }
  122.  
  123. }

  

  需要改进的地方:

    1:做一个本地查询记录的存储

    2:解析内容做一个Scroll的控制

利用百度词典API和Volley网络库开发的android词典应用的更多相关文章

  1. 利用百度语音API进行语音识别。

    由于项目需要,这几天都在试图利用百度语音API进行语音识别.但是识别到的都是“啊,哦”什么的,我就哭了. 这里我只是分享一下这个过程,错误感觉出现在Post语音数据那一块,可能是转换问题吧. API请 ...

  2. 利用百度地图API,获取经纬度坐标

    利用百度地图API,获取经纬度坐标 代码很简单,但在网上没找到现成的获取地图经纬度的页面. 就是想,给当前页面传递一个经纬度,自动定位到此经纬度.然后可以重新选择,选择完返回经纬度. 效果如下: 源代 ...

  3. 利用百度地图API和群蚁算法,对TSP问题进行模拟与求解

    前言 最近由于换了工作,期间也有反思和总结上家公司的得失,总觉得有什么事情当初可以完成或者完成得更好,其中TSP问题就是其中之一.当初在开发一个仓配系统的时候,有一个线路排程的需求,当时自己简单在纸上 ...

  4. 利用百度翻译API,获取翻译结果

    利用百度翻译API,获取翻译结果 translate.py #!/usr/bin/python #-*- coding:utf-8 -*- import sys reload(sys) sys.set ...

  5. 利用百度地图API,在浏览器中找到自己的位置

    首先你得有个百度地图的秘钥,http://lbsyun.baidu.com/apiconsole/key 剩下的就是编码了 这里面会用到一个javascript里的一个函数,getMyLocation ...

  6. 利用百度地图API制作房产酒店地图

    摘要: 想亲手制作一张酷讯.去哪儿.安居客.链接地产那样的房产.酒店地图麼?那赶快来学习吧.(以酷讯为例,如下图) 更多成功案例请点击:http://dev.baidu.com/wiki/map/in ...

  7. 利用百度地图api实现定位

    使用百度地图api前需要先获取一个百度地图开放平台的访问应用AK, 获取百度地图开放平台访问应用AK方式:注册百度账号-->申请百度开发者-->获取密匙-->使用相关功能. 注册账号 ...

  8. Python3爬虫 利用百度地图api得到城市经纬度

    有2种方式,第一种是利用urllib , 方法1:利用urllib , 先把url 转成urlcode,然后读取网页,读到网页再用json读取内容,比较麻烦. 可以在浏览器输入,看一下格式. http ...

  9. 利用百度地图API根据地址查询经纬度

    传上来只是为了记录下三种jsonp方式,$.get(url, callback)方式不行,会出错 -- 必须指明返回类型为”json”才行. 或者使用$.getJSON()或者$.ajax({}). ...

随机推荐

  1. 无线局域网络 WIFI/WAPI/WLAN区别浅析

    WIFI和WAPI的区别 既然WIFI和WAPI都是WLAN的传输协议,那么两者究竟都有怎样的区别? 首先第一点区别在于,两者的缔造者不一样.WIFI是又国外制定的一个协议,而WAPI是由中国制定的, ...

  2. 兼容iOS 10 资料整理

    1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...

  3. 如何增强 Linux 系统的安全性,第一部分: Linux 安全模块(LSM)简介

    http://www.ibm.com/developerworks/cn/linux/l-lsm/part1/ 1.相关背景介绍:为什么和是什么 近年来Linux系统由于其出色的性能和稳定性,开放源代 ...

  4. Fixed error when submitting assignments in Machine Learning on Coursera

    Environment: OS: OSX 10.8.5 Matlab: R2013a(8.1.0.604) 64bit   How to fix: In file submit.m, line 129 ...

  5. 云计算的三层SPI模型

    (转自:http://hi.baidu.com/fengjun8216/item/b15bbef4dcf74049922af27b) 一般而言,云计算架构可以用三层SPI模型来表述. 一.基础设施即服 ...

  6. winform C#获得Mac地址,IP地址,子网掩码,默认网关

    1.添加程序集 2.引入命名空间 using System.Management; 3.方法 ManagementClass mc = new ManagementClass("Win32_ ...

  7. Xcode编译错误集锦

    1.在将ios项目进行Archive打包时,Xcode提示以下错误: [BEROR]CodeSign error: Certificate identity ‘iPhone Distribution: ...

  8. MARIADB 在 OPENSUSE 的安装。

    1.MARIADB  在 OPENSUSE  的安装或者升级  (参考 Setting up MariaDB Repositories ) OPENSUSE 从 12.3 版本开始,默认带有 MARI ...

  9. css3整理--filter

    只在chrome的少数版本的浏览器中有实现,兼容性差,不适宜应用. filter语法: elm { filter: none | <filter-function > [ <filt ...

  10. WPF使用扩展屏幕

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...