今天上课的时候老师讲到了汉字转拼音的问题,感觉挺有意思的,就自己捣鼓了一下。

查阅了一些资料,发现java获取汉字的拼音,pinyin4j.jar这个库可以很好的解决此类问题,先是用Myeclipse10做的,因为最近在学习android开发的内容,所以想把它做成一个简单的app。

首先我们需要先下载pinyin4j-2.5.0.jar这个jar包。

接下来运用android studio来创建一个新的项目,在这里,我的项目名字叫PinYinHelper。

我们来实现一个简单activity_main.xml布局,代码如下:

<RelativeLayout xmlns: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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"><TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="输入汉字:"
        android:textSize="25dp"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="115dp" /><Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="转化"
        android:id="@+id/Change"
        android:layout_above="@+id/textView3"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" /><TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="转化结果:"
        android:textSize="25dp"
        android:id="@+id/textView3"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" /><EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Chinese"
        android:layout_alignTop="@+id/textView"
        android:layout_toRightOf="@+id/textView"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" /><EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/PinYin"
        android:layout_alignTop="@+id/textView3"
        android:layout_toRightOf="@+id/textView3"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" /></RelativeLayout>

   然后是实现MainActivity,代码如下:

   
package com.ljh.pinyinhelper;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;public class MainActivity extends AppCompatActivity {public static String converterToFirstSpell(String chines){String pinyinName = "";char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0].charAt(0);} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}}else{pinyinName += nameChar[i];}}return pinyinName;}/**
     * 汉字转换位汉语拼音,英文字符不变
     * @param chines 汉字
     * @return 拼音
     */
    public static String converterToSpell(String chines){String pinyinName = "";char[] nameChar = chines.toCharArray();HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);for (int i = 0; i < nameChar.length; i++) {if (nameChar[i] > 128) {try {pinyinName += PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0];} catch (BadHanyuPinyinOutputFormatCombination e) {e.printStackTrace();}}else{pinyinName += nameChar[i];}}return pinyinName;}@Override
    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button change = (Button)findViewById(R.id.Change);change.setOnClickListener(new View.OnClickListener() {@Override
            public void onClick(View v) {EditText editTextchinese = (EditText)findViewById(R.id.Chinese);EditText editTextpinyin = (EditText)findViewById(R.id.PinYin);String text = editTextchinese.getText().toString();String chinese = converterToSpell(text);editTextpinyin.setText(chinese);}});}@Override
    public boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Override
    public boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();//noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}
}
效果图:



基本思路:创建两个EditText控件,一个是供用户输入想要转化为拼音的汉字的,另外一个是显示拼音的框。在这里,我们先获取第一个EditText里面用户输入的汉字,然后通过一个按钮控制把汉字转化为拼音。
  是不是很简单呢?其实不然,这还只是刚刚入门而已,想要完全了解其中的精髓,还得去看jar包里的具体代码~

Android Studio 汉字转拼音相关推荐

  1. Java/Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  2. Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  3. android 汉字转字节,android实现汉字转拼音功能 带多音字识别

    android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug.长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qin ...

  4. Android输入汉字得到拼音

    前一段时间,研究Android的通讯录,在它的contacts2.db数据库中发现raw_contacts表中有sort_key这一列用于排序的汉语拼音等信息,就突然想到我们可以利用它得到汉字相应的拼 ...

  5. Android/Java汉字转拼音类及按A-Z排序方法

    在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...

  6. Android中汉字转拼音的优化

    Android中一种高效省资源的汉字转拼音的实现 我在开发Android项目中经常会遇到汉字转拼音的需求,主要是一些按拼音排序,首字母本地搜索匹配的需求,这些需求的特点是这样的:不要求处理声调和多音字 ...

  7. android 将文字转换为拼音格式,android中将汉字转为拼音

    汉字转拼音,汉字转拼音首字母~ 下面的方法是在做项目的时候,从网上查了好久才得到的~虽然不是自己写的,但是也改的差不多了~放在这里供大家参考哈 http://download.csdn.net/det ...

  8. android中汉字转为拼音

    汉语转为拼音 首先要先导入架包:com.belerweb:pinyin4j:2.5.1 工具类: 注释的方法,是可以将单个汉字转为拼音的,为注释的可以转化词语, public class HanZiT ...

  9. android 获取拼音首字母,Android开发 - 汉字转拼音首字母

    概述 工作中经常会遇到的一些排序问题,比如 按汉字的拼音首字母排序,比如人名排序等,就要用到下面的方法了,思路: 1.获得汉字 2.将汉字转换成首字母,并记录下(必要时保存到数据库) 3.按首字母进行 ...

最新文章

  1. 2022-2028年中国汽车橡胶件行业市场调查研究及前瞻分析报告
  2. 两个ListBox中的项互相移动及上下移动
  3. 9path 导致的一场冤假错案
  4. java 容器限制大小,容器中的Java与内存限制:LXC、Docker与OpenVZ
  5. find查找文件的时候排除某个或几个文件或目录
  6. linux 虚拟仪器,linux平台下编写虚拟仪器系统设计
  7. python 使用期物处理并发
  8. Ubuntu18.04有线+离线划词翻译GoldenDict
  9. 微信小程序代码最大限制2M的解决方案
  10. android 腾讯地图demo,腾讯地图调用Demo
  11. java ajax传递到action_day8——ajax传参到action(Struts2)
  12. UVM设置超时退出timeout
  13. 手机安全卫士------手机防盗页面之sim卡绑定读取联系人
  14. 通过平面图分析计算机网络,第五人格格里奥的回忆地图平面图 里奥的回忆地图解析...
  15. SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题
  16. 教学|怎样制作360度全景图,更炫更酷3D建模步骤
  17. Python爬虫笔记——存储数据的基础知识(Csv、Excel)
  18. python笑傲江湖_PHP 2019年继续笑傲江湖
  19. 配置selenium 启动 Chromium
  20. ffmpeg中字典类型的描述

热门文章

  1. Unity3D研究院之控制模型移动旋转与碰撞(七)
  2. Python——二维码生成器
  3. 电商导购前途末路了吗?
  4. 生日小助手V3.0——跨平台的农历生日提醒软件
  5. 微博同城热搜抓取逻辑(333城市)
  6. iconfont -阿里巴巴矢量图标的使用(图片版本)
  7. 钉钉协同引擎与应用场景技术探索
  8. Session.flush和session.evict
  9. MFC使用sleep函数注意事项
  10. 全国省市数据结构从数据库到接口