安卓小项目之刀刀狗翻译

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

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv