您的位置:首页 > 其它

汉字名字转换为拼音

2014-05-19 14:09 267 查看
注:一个简单的工具类的使用,目前只使用于三个字以下的名字



一、UI布局



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:hint="请输入三个字以内的汉字"
>
<requestFocus />
</EditText>

<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="提交"
/>

<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textSize="24sp"
/>
</LinearLayout>


 

二、MainActivity源代码

package com.example.hanzitopinyin;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private EditText inputEdit;
private TextView text1;
private Button button1;
private String hanZiName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputEdit = (EditText) findViewById(R.id.editText1);
text1 = (TextView) findViewById(R.id.text1);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
hanZiName = inputEdit.getText().toString();
if (hanZiName != null) {
char[] nameArr = hanZiName.toCharArray();
if (nameArr.length < 2) {
String pinyinString = HanZiToPinYin
.toPinYin(nameArr[0]);
text1.setText("拼音:" + pinyinString + "\n" + "汉字:"
+ hanZiName);
} else {
String fName = HanZiToPinYin.toPinYin(nameArr[0]);
fName = fName.replaceFirst(fName.substring(0, 1), fName
.substring(0, 1).toUpperCase());
if (nameArr.length < 3) {
String lName1 = HanZiToPinYin.toPinYin(nameArr[1]);
String lName = lName1;
lName = lName.replaceFirst(lName.substring(0, 1),
lName.substring(0, 1).toUpperCase());
text1.setText("拼音:" + lName + " " + fName + "\n"
+ "汉字:" + hanZiName);
} else if (nameArr.length >= 3) {
String lName1 = HanZiToPinYin.toPinYin(nameArr[1]);
String lName2 = HanZiToPinYin.toPinYin(nameArr[2]);
String lName = lName1 + lName2;
lName = lName.replaceFirst(lName.substring(0, 1),
lName.substring(0, 1).toUpperCase());
text1.setText("拼音:" + lName + " " + fName + "\n"
+ "汉字:" + hanZiName);
}
}
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}


三、HanZiToPinYin源代码

package com.example.hanzitopinyin;
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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class HanZiToPinYin {
/**
* 返回一个字的拼音
*
* @param hanzi
* @return
*/
public static String toPinYin(char hanzi) {
HanyuPinyinOutputFormat hanyuPinyin = new HanyuPinyinOutputFormat();
hanyuPinyin.setCaseType(HanyuPinyinCaseType.LOWERCASE);
hanyuPinyin.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
hanyuPinyin.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
String[] pinyinArray = null;
try {
// 是否在汉字范围内
if (hanzi >= 0x4e00 && hanzi <= 0x9fa5) {
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(hanzi,
hanyuPinyin);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
// 将汉字返回
return pinyinArray[0];
}
}


 

四、效果展示


             


源代码下载 》》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息