日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

google在线翻译二

發布時間:2023/12/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 google在线翻译二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android在近幾年得到了千千萬萬的開發者和移動廠商的一致好評。Android承諾開源,秉承了Google的一貫作風,開源為移動生產商節約了成本。當然單靠節約成本是不夠的,Android系統是一個具有豐富用戶體驗的手機平臺或移動平臺,不僅讓用戶賞心悅目享受到她提供的music、影視、攝影和互聯網等豐富的多媒體沖擊。如果只有這些,android怎可能流行起來呢?所以android還針對開發者提供了十分豐富的編程接口(api)極其簡單地復雜的應用,正因為android對開發者的萬般呵護,以致萬千開發者熱情地投入了android的懷抱,當然我也是其中一個,廢話就不多說了!借助“首屆Google暑期大學生博客分享大賽——2010 Andriod篇”的機會分享android可愛之美吧!下面以在線翻譯軟件為例子,帶大家體驗android開發的無窮樂趣吧!

我的英語不怎么好,平時都是依靠電腦上翻譯工具完成作業,可是電腦太臃腫了,于是我有了一個異想天開的想法,自己做一個手機翻譯軟件!DIY,會不會太難了,也許在別的手機系統上,這個的確好難!但是android不一樣!開發android應用簡單到讓你驚訝…..

開發這個軟件的思路:本人比較擅長javascript,對Google api比較了解,所以想借助Google翻譯api結合webView來實現!

參考網站:http://code.google.com/intl/zh-CN/apis/ajaxlanguage/documentation/

google.language.translate(text|option, srcLang, destLang, callback)
至于webView的介紹,大家可以參考android docs

哈哈,不廢話了,下面做第一件事,規劃簡潔而不單調的用戶界面,代碼如下:

Layout/main.xml

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

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

??? android:orientation="vertical"

??? android:layout_width="fill_parent"

??? android:layout_height="fill_parent"

??? android:gravity="right"

??? >

<TextView

??? android:layout_marginTop="10px"

??? android:id="@+id/l_about"?

??? android:layout_width="fill_parent"

??? android:layout_height="wrap_content"

??? android:text="@string/app_name"

??? android:textSize="20sp"

??? android:gravity="center_horizontal"

??? android:typeface="sans"

??? />

?< TextView

??? android:layout_marginTop="10px"

??? android:id="@+id/l_select"

??? android:layout_width="fill_parent"

??? android:layout_height="wrap_content"

??? />

?<EditText

??? android:layout_marginTop="10px"

??? android:id="@+id/tinput"

??? android:layout_width="fill_parent"

??? android:layout_height="wrap_content"

??? android:hint="輸入要翻譯的詞或句子"

??? />

?<Button

??? android:layout_marginTop="10px"

??? android:id="@+id/submit"

??? android:layout_width="wrap_content"

??? android:layout_height="wrap_content"

??? android:text=" 開始翻譯? "

?/>

?<TextView

??? android:id="@+id/tips"

??? android:layout_width="fill_parent"

??? android:layout_height="wrap_content"

??? android:text="翻譯結果如下:"

??? android:textSize="14sp"

??? android:typeface="sans"

??? android:visibility="invisible"

??? />

?<WebView

??? android:layout_marginTop="10px"

??? android:id="@+id/toutput"

??? android:layout_width="fill_parent"

??? android:layout_height="180px"

??? android:visibility="invisible"

??? />

</LinearLayout>

在規劃這個界面中只用了幾個小組件:TextViewEditTextButtonWebView

哈哈,看到這里,你一定想知道這段代碼生成的界面的樣子是怎樣的吧?好,先保持一點神秘感!實現了布局,下面應該做什么呢?

答案是顯而易見的,

public class TranslationOnline extends Activity {

??? private TextView tips;

??? private EditText editText;

??? private WebView webView;

??? private String[] chooseStr={"簡體中文->英語","英語->簡體中文"};

??????

??? @Override

??? public void onCreate(Bundle savedInstanceState) {

??????? super.onCreate(savedInstanceState);

??????? setContentView(R.layout.main);

???????

??????? webView=(WebView)findViewById(R.id.toutput);

??????? final Button submit=(Button)findViewById(R.id.submit);

??????? editText=(EditText)findViewById(R.id.tinput);

??????? tips=(TextView)findViewById(R.id.tips);

??????? final Spinner l_select=(Spinner)findViewById(R.id.l_select);

?

??????? ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,

??????? ???? android.R.layout.simple_spinner_item,chooseStr);//配置一個適配器

??????? adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

??????? l_select.setPrompt("請選擇翻譯的方式");

??????? l_select.setOnItemSelectedListener(new OnItemSelectedListener() {

?

?????????? @Override

?????????? public void onItemSelected(AdapterView<?> arg0, View arg1,

????????????????? int arg2, long arg3) {

???

?????????? }

?

?????????? @Override

?????????? public void onNothingSelected(AdapterView<?> arg0) {

?????????? }

?????? });

??????? l_select.setAdapter(adapter);

???????

??????? WebSettings webSettings = webView.getSettings();

??????? webSettings.setJavaScriptEnabled(true);

??????? webSettings.setSaveFormData(false);

??????? webSettings.setSavePassword(false);

??????? webSettings.setSupportZoom(false);

???????

??????? submit.setOnClickListener(new OnClickListener() {???????

?????????? @Override

?????????? public void onClick(View v) {

?????????????

?????????? ??????? }

??? ?????? ??? });

?????????? }

?????? });

??? }

}

上面都是很普通的代碼,故不作注釋了!現在我為大家揭開界面之謎吧!

界面的確簡潔了點!

這個軟件最核心的部分就是使用Google 翻譯API。下面還是先介紹下怎樣實現webviewhtml的交換吧!webView.loadUrl(url);方法可以打開一個url或本地html,相信這個大家都知道!那么怎樣實現交互呢?如果你裝飾過QQ空間的話,你一定知道在當前網頁的地址欄上填入javascript:translate()就可以調用當前頁面的javascripttranslate()函數!這樣一來,問題就簡單多了,我知道很多人會選擇webserver來實現翻譯!但是那些太復雜了,而且浪費手機資源!看看html代碼先吧!

Assets/ cn2en.html

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<script type="text/javascript">

??? google.load("language", "1");

??? function g_translate(strInput,out){

??????? google.language.translate(strInput, "zh-CN", "en", function(result){

????????? if (!result.error){

??????????? document.getElementById(out).innerHTML=result.translation;

??????????????????????????? }else

??????????? document.getElementById(out).innerHTML="google_translate Error!";

??????? });

????? }

</script>

?

?

<body style="background-color:#fff">

<div id="show" style="font-size:16px; color:#666;"></div>

<script language="javascript">

function translate(strTranslate)

{

??? document.getElementById("show").innerHTML="翻譯中.....";

??? g_translate(strTranslate, "show");

}

</script>

</body>

</html>

更詳細的參考http://code.google.com/intl/zh-CN/apis/ajaxlanguage/documentation/

google.language.translate(text|option, srcLang, destLang, callback)這個API實現翻譯功能!我也不多說了,參考官方的文檔更有意思,而且看官方的開發文檔這是每一個開發者的好習慣,更是超越現實,突破自己的最好方式,也是我說得太夸張了,我還是強調看文檔的重要性!

Android中實現多線程有很多方法的,如實現Runnable接口,擴展線程類或者Handler

下面看看完整的代碼吧:

package com.hl.translationonline;

?

import android.app.Activity;

import android.os.Bundle;

import android.os.Handler;

import android.view.View;

import android.view.View.OnClickListener;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Spinner;

import android.widget.TextView;

import android.widget.AdapterView.OnItemSelectedListener;

?

public class TranslationOnline extends Activity {

??? private TextView tips;

??? private EditText editText;

??? private WebView webView;

??? private String[] url = {"file:///android_asset/cn2en.html",

?????????? "file:///android_asset/en2cn.html"};//這里我是分開兩個頁面實現翻譯模式簡體中文->英語英語->簡體中文的,當然你也可以用個文件來實現,不過要改寫函數,

??? private String[] chooseStr={"簡體中文->英語","英語->簡體中文"};//翻譯模式設定,本示例只是實現了英語和中文之間的轉譯,其實你還可以實現多國語言翻譯的!這是留給讀者去思考吧!

??? private Handler tHandler = new Handler();//利用Handler來實現線程通信

??????

??? @Override

??? public void onCreate(Bundle savedInstanceState) {

??????? super.onCreate(savedInstanceState);

??????? setContentView(R.layout.main);

???????

??????? webView=(WebView)findViewById(R.id.toutput);

??????? final Button submit=(Button)findViewById(R.id.submit);

??????? editText=(EditText)findViewById(R.id.tinput);

??????? tips=(TextView)findViewById(R.id.tips);

??????? final Spinner l_select=(Spinner)findViewById(R.id.l_select);

?

??????? ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,

??????? ???? android.R.layout.simple_spinner_item,chooseStr);

??????? adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

??????? l_select.setPrompt("請選擇翻譯的方式");

??????? l_select.setOnItemSelectedListener(new OnItemSelectedListener() {

?

?????????? @Override

?????????? public void onItemSelected(AdapterView<?> arg0, View arg1,

????????????????? int arg2, long arg3) {//通過選擇來設置翻譯模式

????????????? if(((TextView)arg1).getText()==chooseStr[0])

????????????????? webView.loadUrl(url[0]);

????????????? if(((TextView)arg1).getText()==chooseStr[1])

????????????????? webView.loadUrl(url[1]);

?????????? }

?

?????????? @Override

?????????? public void onNothingSelected(AdapterView<?> arg0) {

????????????? webView.loadUrl(url[0]);//默認模式

?????????? }

?????? });

??????? l_select.setAdapter(adapter);

???????

??????? WebSettings webSettings = webView.getSettings();

??????? webSettings.setJavaScriptEnabled(true);

??????? webSettings.setSaveFormData(false);

??????? webSettings.setSavePassword(false);

??????? webSettings.setSupportZoom(false);

??????? //翻譯按鈕被點擊時

??????? submit.setOnClickListener(new OnClickListener() {???????

?????????? @Override

?????????? public void onClick(View v) {

????????????? tips.setVisibility(TextView.VISIBLE);//提示可見

????????????? webView.setVisibility(WebView.VISIBLE);//翻譯結果可見

????????????? tHandler.post(new Runnable(){

?????????? ??????? public void run(){

?????????? ????????? if (editText.getText().toString() != ""){

?????? //翻譯…………

?????????? ??????? ??webView.loadUrl("javascript:translate('"+

?????????? ??????? ??????? ??editText.getText().toString() + "')");

?????????? ????????? }

?????????? ??????? }

?????????? ??? });

?????????? }

?????? });

??? }

}

當然不要忘記申請訪問internet的權限

<uses-permission android:name="android.permission.INTERNET" />

說到這是,一個完整的在線翻譯軟件也十分順利的完成了!現在是時候看看她的功能吧!

成功是喜悅的!android應用開發簡單吧!那你還在等什么呢?趕快加入我們這個開發隊伍吧,DIY自己的手機吧,打造真正的個性手機!分享是快樂的,千言萬語道不盡!

總結

以上是生活随笔為你收集整理的google在线翻译二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。