Android Studio 汉字转拼音
今天上课的时候老师讲到了汉字转拼音的问题,感觉挺有意思的,就自己捣鼓了一下。
查阅了一些资料,发现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 汉字转拼音相关推荐
- Java/Android中汉字转拼音的两种方法,优劣比较
一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...
- Android中汉字转拼音的两种方法,优劣比较
一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...
- android 汉字转字节,android实现汉字转拼音功能 带多音字识别
android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug.长沙会被翻译拼音成zhangsha,重庆会被翻译拼音成zhong qin ...
- Android输入汉字得到拼音
前一段时间,研究Android的通讯录,在它的contacts2.db数据库中发现raw_contacts表中有sort_key这一列用于排序的汉语拼音等信息,就突然想到我们可以利用它得到汉字相应的拼 ...
- Android/Java汉字转拼音类及按A-Z排序方法
在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...
- Android中汉字转拼音的优化
Android中一种高效省资源的汉字转拼音的实现 我在开发Android项目中经常会遇到汉字转拼音的需求,主要是一些按拼音排序,首字母本地搜索匹配的需求,这些需求的特点是这样的:不要求处理声调和多音字 ...
- android 将文字转换为拼音格式,android中将汉字转为拼音
汉字转拼音,汉字转拼音首字母~ 下面的方法是在做项目的时候,从网上查了好久才得到的~虽然不是自己写的,但是也改的差不多了~放在这里供大家参考哈 http://download.csdn.net/det ...
- android中汉字转为拼音
汉语转为拼音 首先要先导入架包:com.belerweb:pinyin4j:2.5.1 工具类: 注释的方法,是可以将单个汉字转为拼音的,为注释的可以转化词语, public class HanZiT ...
- android 获取拼音首字母,Android开发 - 汉字转拼音首字母
概述 工作中经常会遇到的一些排序问题,比如 按汉字的拼音首字母排序,比如人名排序等,就要用到下面的方法了,思路: 1.获得汉字 2.将汉字转换成首字母,并记录下(必要时保存到数据库) 3.按首字母进行 ...
最新文章
- 2022-2028年中国汽车橡胶件行业市场调查研究及前瞻分析报告
- 两个ListBox中的项互相移动及上下移动
- 9path 导致的一场冤假错案
- java 容器限制大小,容器中的Java与内存限制:LXC、Docker与OpenVZ
- find查找文件的时候排除某个或几个文件或目录
- linux 虚拟仪器,linux平台下编写虚拟仪器系统设计
- python 使用期物处理并发
- Ubuntu18.04有线+离线划词翻译GoldenDict
- 微信小程序代码最大限制2M的解决方案
- android 腾讯地图demo,腾讯地图调用Demo
- java ajax传递到action_day8——ajax传参到action(Struts2)
- UVM设置超时退出timeout
- 手机安全卫士------手机防盗页面之sim卡绑定读取联系人
- 通过平面图分析计算机网络,第五人格格里奥的回忆地图平面图 里奥的回忆地图解析...
- SAP ABAP 调用 BAPI_GOODSMVT_CREATE 没有执行 MIGO/MB0A 相同检查的问题
- 教学|怎样制作360度全景图,更炫更酷3D建模步骤
- Python爬虫笔记——存储数据的基础知识(Csv、Excel)
- python笑傲江湖_PHP 2019年继续笑傲江湖
- 配置selenium 启动 Chromium
- ffmpeg中字典类型的描述