Android开发——手把手写APP(三)调用有道词典翻译API实现的翻译APP(详细备注解读)
运行效果图
有道翻译的API
http://fanyi.youdao.com/openapi.do?keyfrom=lewe518&key=70654389&type=data&doctype=json&version=1.1&q=?
“?”里填单词或者汉语
设计思路
1.界面设计
2.实现功能:在输入框输入后,点击查询,连接有道翻译API查询,在文本框输出查询结果
网络请求的操作图:
准备工作
①OkHttp3包 OkHttp3包的导入
②GSON包 GSON包的导入
③网络权限 网络授权方法
实现代码
界面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:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.example.administrator.queryword.MainActivity"><EditTextandroid:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入查询内容"android:id="@+id/et"/><TextViewandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_below="@+id/et"android:id="@+id/tv"/><Buttonandroid:layout_width="match_parent"android:layout_height="50dp"android:text="查询"android:layout_below="@+id/tv"android:onClick="query"/>
</RelativeLayout>
MainActivity
package com.example.administrator.queryword;import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import com.example.administrator.queryword.model.Basic;
import com.example.administrator.queryword.model.Word;import org.json.JSONException;
import org.json.JSONObject;import java.io.IOException;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import util.JsonUitl;/*** 实现单词查询* @author thinkdoor** 1.界面初始化* 2.创建handler* 3.实现上网查词* 1.创建OkClient和Request对象* 2.创建Call对象* 3.重写Call对象的enCall方法* 1.获取响应数据* 2.封装成json对象* 3.转为java对象* 4.创建message对象包裹信息* 5.发送给handler* 4.handler获取消息进行处理* 1.获取对象* 2.获取数据* 3.在界面显示*/
public class MainActivity extends AppCompatActivity {//日志打印private String TAG = "MainActivity";//1.界面初始化EditText editText;TextView textView;//2.创建handlerprivate Handler handler = new Handler(){//4.handler获取消息进行处理@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);//1.获取对象Word word = (Word) msg.obj;//2.获取数据Basic basic = word.getBasic();String explains = null;explains = basic.getStrings(basic.getExplains());//3.在界面显示textView.setText(explains);}};/*** 界面创建* @param savedInstanceState*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText = (EditText) findViewById(R.id.et);textView = (TextView) findViewById(R.id.tv);}/*** 查询按钮的监听方法* @param view*/public void query(View view){String word = editText.getText().toString();//调用上网查词方法queryWord(word);}/*** 3.实现上网查词1.创建OkClient和Request对象2.创建Call对象3.重写Call对象的enCall方法1.获取响应数据2.封装成json对象3.转为java对象4.发送message给handler* @param s 要查询的单词*/public void queryWord(String s){String url = "http://fanyi.youdao.com/openapi.do?keyfrom=lewe518&key=70654389&type=data&doctype=json&version=1.1&q="+s;//1.创建OkClient和Request对象OkHttpClient okHttpClient = new OkHttpClient();final Request request = new Request.Builder().url(url).get().build();//2.创建Call对象Call call = okHttpClient.newCall(request);//3.重写Call对象的enqueue方法call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.d(TAG, "onFailure: ");}@Overridepublic void onResponse(Call call, Response response) throws IOException {//1.获取响应数据String str = response.body().string();Log.d(TAG, "onResponse: " + str);try {//2.封装成json对象JSONObject jsonObject = new JSONObject(str);//3.转为java对象Word word = (Word) JsonUitl.stringToObject(jsonObject.toString(),Word.class);//4.创建message,包裹信息Message message = new Message();message.obj = word;//5.发送message给handlerhandler.sendMessage(message);} catch (JSONException e) {e.printStackTrace();}}});}
}
源码链接:
链接:https://pan.baidu.com/s/1a9URY6u-jaovrm5it8xZKQ
提取码:qxog
要是觉得还可以,点个再走吧!求求了~
Android开发——手把手写APP(三)调用有道词典翻译API实现的翻译APP(详细备注解读)相关推荐
- Android开发——手把手写APP(二)QQ退出对话框动画模拟
运行效果图 实现代码 首先,主页面就是一个backgroud的图片,并不是真正的QQ. 主要就是这个dialog的对话框和animation的动画效果. 还是先前端,再后端的思路. 1.界面设计 这个 ...
- Android开发——手把手写APP(四)——数独游戏编写(七)——总结
总结 文章目录 总结 出现的问题 学到的东西 出现的问题 1.逻辑很绕,Dialog.ShuduView.Game中的方法来回的调用容易被绕晕,一定要注意逻辑的清晰,一定要清楚哪个是界面,哪个是逻辑. ...
- Java Swing 调用有道词典API实现自定义桌面翻译字典
具体实现内容长这个样子: 下面开始具体的内容准备: 要调用有道词典的API,必须先申请API 进入网址(https://ai.youdao.com/?keyfrom=old-openapi) 先登录注 ...
- [python爬虫]--调用有道词典进行翻译
最近在学习python爬虫,写出来的一些爬虫记录在csdn博客里,同时备份一个放在了github上. github地址:https://github.com/wjsaya/python_spider_ ...
- 【Android开发VR实战】三.开发一个寻宝类VR游戏TreasureHunt
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53939303 本文出自[DylanAndroid的博客] [Android开发 ...
- Android开发笔记(一百三十七)自定义行为Behavior
协调布局CoordinatorLayout能够让内部的子控件互相配合着移动,这跟以往孤立的控件运动截然不同,协调运动的结果,意味着App画面更加流畅.自然,也更符合日常生活中的动作场景.如果你对Coo ...
- Android开发笔记(一百三十六)可折叠工具栏布局CollapsingToolbarLayout
可折叠工具栏布局CollapsingToolbarLayout 上一篇博文< Android开发笔记(一百三十五)应用栏布局AppBarLayout>阐述了如何把Toolbar往上滚动,那 ...
- Android开发笔记(一百三十五)应用栏布局AppBarLayout
应用栏布局AppBarLayout Android5.0推出工具栏Toolbar用来替代ActionBar,灵活性和易用性大大增强,有关Toolbar的详细介绍参见< Android开发笔记(一 ...
- 《阿里巴巴 Android 开发手册》(三)
<阿里巴巴 Android 开发手册>(三) 手册下载地址 相关文章链接 <阿里巴巴 Android 开发手册>(一) <阿里巴巴 Android 开发手册>(二) ...
最新文章
- 起薪2万的爬虫工程师, Python需要学到什么程度才可以就业?
- Python学习笔记之基础(二)变量和类型
- C/C++结构体struct 与结构体数组和枚举型enum的结合使用
- 演练 青鸟游戏迷你平台
- Laravel核心解读--Database(三) 模型CRUD
- 爬虫百度图片进入百度验证怎么办?
- CSFB和SRVCC
- 西工大noj(25,26)
- Windows64Adobe2019/2019全家桶
- 雨听 | 英语学习笔记(十五)~作文范文:私家车主应该为环境污染纳税吗?
- ESP32产品系列之智能插座(一),框架及硬件设计
- 多目标优化系列(四)RM-MEDA
- 走到最后,摩拜连姓名都不能拥有?
- Shell脚本实现自动检测/配置/开启/关闭redis后台服务
- 2021-07-09 终值定理和稳态误差【自动控制原理】
- SAP SD VL31N BBP_INB_DELIVERY_CREATE 根据采购订单创建内向交货单
- Windows--UEFI引导安装Win10
- K8S之初入师门第一篇熟读手册
- QT 读取和写入注册表
- GIS工具maptalks开发手册(二)01-02之GeoJSON转化为Geometry——渲染点