Android dictionary application developed using Baidu dictionary API and Volley network library, volleyandroid
For more information about Baidu dictionary API, visit: Baidu dictionary API introduction.
Here is an introduction to the android network library Volley.
First, let's take a look at the general interface layout!
Repost the final
We can see that the layout is very simple, right:
The layout xml file is as follows:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.dict.MainActivity" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Clear" android:onClick="clearHandler" android:padding="7dip" /> <EditText android:id="@+id/etWord" android:singleLine="true" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:background="@android:drawable/edit_text" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Query" android:onClick="queryHandler" android:padding="7dip" /> </LinearLayout> <TextView android:id="@+id/tvResult" android:layout_width="fill_parent" android:layout_height="fill_parent" android:hint="result" /></LinearLayout>
Then there are several events,
1: Clear button processing: Clear the content in the input box
2: Query button processing:
1: Use the Baidu dictionary API to retrieve content
2: parse the returned json data and process it and display it in the TextView space below,
3: cancel the display of the keyboard.
The Code is as follows:
Package com. example. dict; import java. util. hashMap; import java. util. map; import org. json. JSONArray; import org. json. JSONObject; import com. android. volley. request; import com. android. volley. requestQueue; import com. android. volley. response; import com. android. volley. volleyError; import com. android. volley. toolbox. stringRequest; import com. android. volley. toolbox. volley; import android. support. v7.app. actionBarAct Ivity; import android. content. context; import android. OS. bundle; import android. view. view; import android. view. inputmethod. inputMethodManager; import android. widget. editText; import android. widget. textView; public class MainActivity extends ActionBarActivity {private String url = "http://openapi.baidu.com/public/2.0/translate/dict/simple? Client_id = 5kHZHeo8MN7L6NmPTGV6POsb & q = @ word & from = en & to = zh "; @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main);} public void clearHandler (View view) {EditText text = (EditText) findViewById (R. id. etWord); text. setText ("");} public void queryHandler (View view) {EditText text = (EditText) findViewById (R. id. etWord); if (text. getText (). length () <= 0) {return;} RequestQueue requestQueue = Volley. newRequestQueue (this); String tempUrl = this. url. replace ("@ word", text. getText (). toString (); StringRequest postRequest = new StringRequest (Request. method. GET, tempUrl, new Response. listener <String> () {@ Override public void onResponse (String response) {MainActivity. this. parseResult (response) ;}}, new Response. errorListener () {@ Override public void onErrorResponse (VolleyError error) {}}) {@ Override protected Map <String, String> getParams () {Map <String, string> params = new HashMap <String, String> (); return params ;}}; requestQueue. add (postRequest);} public void parseResult (String source) {try {final TextView display = (TextView) findViewById (R. id. tvResult); display. setText (""); InputMethodManager imm = (InputMethodManager) getSystemService (Context. INPUT_METHOD_SERVICE); if (imm. isActive () {imm. toggleSoftInput (InputMethodManager. SHOW_IMPLICIT, InputMethodManager. HIDE_NOT_ALWAYS);} JSONObject obj = new JSONObject (source); JSONObject data = obj. getJSONObject ("data"); JSONArray symbols = data. getJSONArray ("symbols"); for (int I = 0; I <symbols. length (); I ++) {JSONObject parts = symbols. getJSONObject (I); for (int j = 0; j <parts. getJSONArray ("parts "). length (); j ++) {JSONObject item = parts. getJSONArray ("parts "). getJSONObject (j); display. append (item. getString ("part"); display. append ("\ n"); JSONArray arr = item. getJSONArray ("means"); for (int k = 0; k <arr. length (); k ++) {display. append ("" + arr. getString (k); display. append ("\ n") ;}}} catch (Exception e ){}}}View Code
Areas for improvement:
1: store a local query record
2: Perform Scroll control on the parsed content