有道词典

来源:互联网 发布:网络歌手朋友陪你醉 编辑:程序博客网 时间:2024/06/10 15:14

1.实例(在EditText中输入查询的英文或中文,结果在下方显示)

2.MainActivity.java 代码如下:


 package com.example.youdaodictionary;

  importandroid.app.Activity;

  importandroid.os.Bundle;

  importandroid.text.TextUtils;

  import android.view.Menu;

  importandroid.view.View;

  importandroid.webkit.WebView;

  importandroid.webkit.WebViewClient;

 import android.widget.EditText;

 import android.widget.Toast;

 publicclass MainActivity extendsActivity {

    private EditText etWord;

     private WebView wvResult; 

    @Override

    protectedvoid onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main); 

        initViews();

    } 

    privatevoid initViews() {

        etWord = (EditText) findViewById(R.id.etWord);

        wvResult = (WebView) findViewById(R.id.wvSearchResult);

        wvResult.setWebViewClient(new WebViewClient() {

            @Override

            public booleanshouldOverrideUrlLoading(WebView view, String url) {

                view.loadUrl(url);

               returntrue;

            }

        });

    }

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

         getMenuInflater().inflate(R.menu.main,menu);

        returntrue;

    } 

    publicvoid searchWord(Viewview) {

        String word = etWord.getText().toString();

        if (TextUtils.isEmpty(word)) {

            Toast.makeText(this,"查询内容不能为空!",Toast.LENGTH_LONG).show();

        }else {

            final String strUrl = http://dict.youdao.com/m/search?keyfrom=dict.mindex&vendor=&q=

                    + word;

            wvResult.loadUrl(strUrl);

        }

    }

activity.xml:



 <RelativeLayoutxmlns: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:background="@drawable/a"

     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=".MainActivity" >

    <EditText

        android:id="@+id/etWord"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_alignParentTop="true"

        android:layout_marginTop="27dp"

        android:background="@android:drawable/edit_text"

        android:ems="10"

        android:singleLine="true"

        android:textColor="#552006"

        android:textColorHint="#782f10" >

        <requestFocus />

    </EditText>

    <WebView

        android:id="@+id/wvSearchResult"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_alignLeft="@+id/etWord"

        android:layout_below="@+id/etWord"

        android:layout_marginTop="22dp"

        android:background="@drawable/bg_roundcorner"

        android:textAppearance="?android:attr/textAppearanceMedium"

        android:textSize="25sp" />

    <Button

        android:id="@+id/btnSearch"

       android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_above="@+id/wvSearchResult"

        android:layout_alignParentRight="true"

        android:background="@drawable/ibsearchword"

        android:onClick="searchWord" />

 </RelativeLayout>



jsonp数据格式举例

     http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=jsonp&callback=show&version=1.1&q=API 

    show({ 

         "errorCode":0 

         "query":"API", 

         "translation":["API"],// 有道翻译 

         "basic":{// 有道词典-基本词典 

             "explains":[ 

                 "abbr. 应用程序界面(Application Program Interface);..." 

             ] 

         }, 

          "web":[// 有道词典-网络释义 

             { 

                 "key":"API", 

                 "value":["应用程序接口(ApplicationProgramming Interface)","应用编程接口","应用程序编程接口","美国石油协会"] 

             }, 

             {...} 

         ] 

      });   

 具体实现: 

    <font size="3" color="#000000" face="微软雅黑">packagexiaosi.youdao;       

    import org.apache.http.HttpResponse; 

    import org.apache.http.client.methods.HttpGet; 

    importorg.apache.http.impl.client.DefaultHttpClient; 

    importorg.apache.http.util.EntityUtils; 

    import org.json.JSONArray; 

    import org.json.JSONObject;        

    import android.app.Activity; 

    import android.os.Bundle; 

    import android.view.View; 

    import android.view.View.OnClickListener; 

    import android.widget.Button; 

    import android.widget.EditText; 

    import android.widget.TextView; 

    import android.widget.Toast; 

      

    publicclass YoudaoActivityextends Activity 

    { 

        private EditText    edit                = null; 

        private Button      search              = null; 

        private TextView    text                =null; 

        private String      YouDaoBaseUrl       = "http://fanyi.youdao.com/openapi.do"; 

        private String      YouDaoKeyFrom       = "MyLifes"; 

        private String      YouDaoKey           = "你申请的API Key"; 

        private String      YouDaoType          = "data"; 

        private String      YouDaoDoctype       = "json"; 

        private String      YouDaoVersion       = "1.1"; 

        @Override 

        publicvoid onCreate(BundlesavedInstanceState) 

        { 

           super.onCreate(savedInstanceState); 

            setContentView(R.layout.main); 

            init(); 

        } 

      

        privatevoid init() 

        { 

            edit = (EditText)findViewById(R.id.edit); 

            search = (Button)findViewById(R.id.search); 

            search.setOnClickListener(newsearchListener()); 

            text = (TextView)findViewById(R.id.text); 

        } 

      

        privateclass searchListenerimplements OnClickListener 

        { 

            @Override 

            publicvoid onClick(View v) 

            { 

                String YouDaoSearchContent = edit.getText().toString().trim(); 

                String YouDaoUrl =YouDaoBaseUrl+"?keyfrom=" + YouDaoKeyFrom +"&key=" + YouDaoKey +"&type=" + YouDaoType +"&doctype=" 

                        + YouDaoDoctype + "&type=" + YouDaoType +"&version=" + YouDaoVersion +"&q=" +YouDaoSearchContent; 

                try 

                { 

                    AnalyzingOfJson(YouDaoUrl); 

                } 

                catch (Exception e) 

                { 

                    e.printStackTrace(); 

                } 

            } 

       }        

        privatevoidAnalyzingOfJson(String url) throws Exception 

        { 

            // 第一步,创建HttpGet对象 

            HttpGet httpGet = new HttpGet(url); 

            // 第二步,使用execute方法发送HTTP GET请求,并返回HttpResponse对象 

            HttpResponse httpResponse = newDefaultHttpClient().execute(httpGet); 

            if(httpResponse.getStatusLine().getStatusCode() ==200) 

            { 

                // 第三步,使用getEntity方法活得返回结果 

                String result =EntityUtils.toString(httpResponse.getEntity()); 

                System.out.println("result:" + result); 

                JSONArray jsonArray = new JSONArray("[" + result + "]"); 

               String message = null; 

               for (int i = 0; i <jsonArray.length(); i++) 

                { 

                    JSONObject jsonObject = jsonArray.getJSONObject(i); 

                    if (jsonObject !=null) 

                    { 

                        String errorCode =jsonObject.getString("errorCode"); 

                        if (errorCode.equals("20")) 

                         { 

                            Toast.makeText(getApplicationContext(),"要翻译的文本过长",Toast.LENGTH_SHORT); 

                        } 

                        elseif (errorCode.equals("30 ")) 

                         { 

                            Toast.makeText(getApplicationContext(),"无法进行有效的翻译",Toast.LENGTH_SHORT); 

                        } 

                        elseif (errorCode.equals("40")) 

                        { 

                             Toast.makeText(getApplicationContext(),"不支持的语言类型",Toast.LENGTH_SHORT); 

                        } 

                        elseif (errorCode.equals("50")) 

                        { 

                            Toast.makeText(getApplicationContext(),"无效的key",Toast.LENGTH_SHORT); 

                        } 

                        else 

                        { 

                            // 要翻译的内容 

                            String query =jsonObject.getString("query"); 

                            message =query; 

                            // 翻译内容 

                            String translation= jsonObject.getString("translation"); 

                             message +="\t" + translation; 

                            // 有道词典-基本词典 

                            if (jsonObject.has("basic")) 

                            { 

                                JSONObjectbasic = jsonObject.getJSONObject("basic"); 

                                if (basic.has("phonetic")) 

                                { 

                                    Stringphonetic = basic.getString("phonetic"); 

                                     message +="\n\t" + phonetic; 

                                } 

                                if (basic.has("phonetic")) 

                                { 

                                    Stringexplains = basic.getString("explains"); 

                                    message +="\n\t" + explains; 

                                } 

                            } 

                            // 有道词典-网络释义 

                             if (jsonObject.has("web")) 

                            { 

                                String web =jsonObject.getString("web"); 

                                JSONArraywebString = new JSONArray("[" + web + "]"); 

                                 message +="\n网络释义:"; 

                                JSONArraywebArray = webString.getJSONArray(0); 

                               int count =0; 

                                while(!webArray.isNull(count)){ 

                                    if(webArray.getJSONObject(count).has("key")) 

                                    { 

                                        Stringkey = webArray.getJSONObject(count).getString("key");                                          message += "\n\t<"+(count+1)+">" + key; 

                                    } 

                                    if(webArray.getJSONObject(count).has("value")) 

                                    { 

                                        Stringvalue = webArray.getJSONObject(count).getString("value"); 

                                        message +="\n\t  " + value; 

                                    } 

                                   count++; 

                                } 

                            } 

                        } 

                    } 

                } 

                text.setText(message); 

            } 

            else 

            { 

                Toast.makeText(getApplicationContext(),"提取异常",Toast.LENGTH_SHORT); 

            } 

        } 

    } </font>

 


 


 main.xml 

    <font size="3" color="#000000" face="微软雅黑">

    <?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

        android:layout_width="fill_parent" 

         android:layout_height="fill_parent" 

        android:orientation="vertical"  

        android:background="@drawable/a"> 

      

        <EditText  

            android:id="@+id/edit" 

            android:layout_width="fill_parent" 

            android:layout_height="wrap_content" 

            android:hint="输入你要查询的内容......" /> 

      

        <Button 

            android:id="@+id/search" 

            android:layout_width="wrap_content" 

             android:layout_height="wrap_content" 

            android:hint="查询" /> 

      

        <ScrollView 

            android:layout_width="fill_parent" 

            android:layout_height="wrap_content" 

            android:scrollbars="none" > 

      

            <TextView 

                android:id="@+id/text" 

                android:layout_width="fill_parent" 

                android:layout_height="wrap_content"  

                android:textColor="#000000"/> 

        </ScrollView> 

      

    </LinearLayout> 

    </font>

 


 



0 0
原创粉丝点击