安卓小项目之刀刀狗翻译

2023-10-31 18:10
文章标签 项目 翻译 刀刀 安卓小

本文主要是介绍安卓小项目之刀刀狗翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学了一阵安卓,想搞个实用的app玩玩。

项目名称:刀刀狗翻译

api源:有道api

界面如下,略简陋



mainactivity

package com.example.zheng.fangyi;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends AppCompatActivity {private EditText input;private TextView result;String rdline=new String();String read=null;@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);input = (EditText) findViewById(R.id.input);result = (TextView) findViewById(R.id.result);result.setMovementMethod(ScrollingMovementMethod.getInstance());Button check = (Button) findViewById(R.id.check);try {check.setOnClickListener(new View.OnClickListener() {@Override
                public void onClick(View v) {new AsyncTask<String,Void,Void>(){@Override
                        protected Void doInBackground(String... params) {try {URL url=new URL(params[0]);try {URLConnection conn=url.openConnection();InputStream is=conn.getInputStream();InputStreamReader isr=new InputStreamReader(is,"utf-8");BufferedReader br=new BufferedReader(isr);String line;while((line=br.readLine())!=null){System.out.println(line);rdline+=line;}br.close();isr.close();is.close();} catch (IOException e) {e.printStackTrace();}} catch (MalformedURLException e) {e.printStackTrace();}return null;}}.execute("http://fanyi.youdao.com/openapi.do?keyfrom=zsdlove&key=5668291&type=data&doctype=xml&version=1.1&q="+input.getText());xmlresolve(rdline);//解析xml
                    rdline="";read="";}});}catch (Exception e) {e.printStackTrace();}}public  void xmlresolve(String rdline)//xml解析
    {try {Document document = DocumentHelper.parseText(rdline);org.dom4j.Element root=document.getRootElement();//获取根节点
            //错误捕获==========
            Element errorCode=root.element("errorCode");if(errorCode.getText().equals("20")){Toast.makeText(getApplicationContext(),"要翻译的文本过长",Toast.LENGTH_SHORT);}else if(errorCode.getText().equals("30")){Toast.makeText(getApplicationContext(),"无法进行有效的翻译",Toast.LENGTH_SHORT);}else if(errorCode.getText().equals("40")){Toast.makeText(getApplicationContext(),"不支持的语言类型",Toast.LENGTH_SHORT);}else if(errorCode.getText().equals("50")){Toast.makeText(getApplicationContext(),"无效的key",Toast.LENGTH_SHORT);}else if(errorCode.getText().equals("60")){Toast.makeText(getApplicationContext(),"请输入正确的英文",Toast.LENGTH_SHORT);}//错误捕获finish=================
            else{org.dom4j.Element tnote=root.element("translation");//获取translation节点
            Element pnote=tnote.element("paragraph");//获取paragraph节点
            //===================
            Element basic =root.element("basic");//basic节点
            Element us=basic.element("us-phonetic");//美式音标
            Element uk=basic.element("uk-phonetic");//uk音标
            Element explains=basic.element("explains");//基本释义
            Element ex=explains.element("ex");read="翻译结果:"+"\r\n"+"常规翻译:"+pnote.getText()+"\r\n"+"美式音标:"+us.getText()+"\r\n"+"英式音标:"+uk.getText()+"\r\n"+"名词解释:"+ex.getText();}} catch (DocumentException e) {e.printStackTrace();}result.setText(read);}
}
========================================================================================================================

activity_main.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"
    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.zheng.fangyi.MainActivity"><Button
        android:text="查询"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/check"
        android:layout_below="@+id/input"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="12dp" /><TextView
        android:text="翻译结果:"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="67dp"
        android:id="@+id/result"
        android:layout_alignTop="@+id/check"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" /><TextView
        android:text="zsd出品"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="32dp"
        android:id="@+id/textView" /><EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="请输入"
        android:ems="10"
        android:id="@+id/input"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" /></RelativeLayout>

输入hello

查看效果



这里提一下,对于xml返回文件的解析需要用到dom4j.jar包,可以到官网上去下载。引入项目中的libs目录中就可以了,libs目录找不到的原因是目录查看的方式不对


这篇关于安卓小项目之刀刀狗翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/317185

相关文章

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4