排序工具类:: 网上拔得
public class PingYinUtil { /** * 将字符串中的中文转化为拼音,其他字符不变 * * @param inputString * @return */ public static String getPingYin(String inputString) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = inputString.trim().toCharArray(); String output = ""; try { for (int i = 0; i < input.length; i++) { if (java.lang.Character.toString(input[i]). matches("[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper. toHanyuPinyinStringArray(input[i], format); output += temp[0]; } else output += java.lang.Character.toString( input[i]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output; } /** * 汉字转换位汉语拼音首字母,英文字符不变 * @param chines 汉字 * @return 拼音 */ public static String converterToFirstSpell(String chines){ String pinyinName = ""; char[] nameChar = chines.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); 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; } }
public class PingYinUtil { /** * 将字符串中的中文转化为拼音,其他字符不变 * * @param inputString * @return */ public static String getPingYin(String inputString) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = inputString.trim().toCharArray(); String output = ""; try { for (int i = 0; i < input.length; i++) { if (java.lang.Character.toString(input[i]). matches("[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper. toHanyuPinyinStringArray(input[i], format); output += temp[0]; } else output += java.lang.Character.toString( input[i]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output; } /** * 汉字转换位汉语拼音首字母,英文字符不变 * @param chines 汉字 * @return 拼音 */ public static String converterToFirstSpell(String chines){ String pinyinName = ""; char[] nameChar = chines.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); 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; } }
网上拔得;;;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class RightLetterView extends View {
public RightLetterView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
public RightLetterView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public RightLetterView(Context context) {
super(context);
}
// 分类
String[] assort = { "★", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W",
"X", "Y", "Z", "#" };
//
private Paint paint = new Paint();
// 选择的索引
private int selectIndex = -1;
// 字母监听器
private OnTouchAssortListener mOnTouch;
// 接口回调
public void setOnTouchAssortListener(OnTouchAssortListener onTouch) {
mOnTouch = onTouch;
}
public interface OnTouchAssortListener {
public void onTouchAssortListener(String s);
public void onTouchAssortUP();
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
int height = getHeight();
int width = getWidth();
int interval = height / assort.length;
for (int i = 0; i < assort.length; i++) {
paint.setColor(Color.BLACK);
// 粗体
paint.setTypeface(Typeface.DEFAULT_BOLD);
// 抗锯齿
paint.setAntiAlias(true);
paint.setTextSize(30);
if (i == selectIndex) {
paint.setColor(Color.parseColor("#3399ff"));
paint.setFakeBoldText(true);
}
float xPos = width / 2 - paint.measureText(assort[i]) / 2;
float yPos = interval * i + interval;
canvas.drawText(assort[i], xPos, yPos, paint);
paint.reset();
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
final float y = event.getY();// 点击y坐标
// 点击y坐标所占总高度的比例*b数组的长度就等于点击b中的个数.
final int index = (int) (y / getHeight() * assort.length);
if (index >= 0 && index < assort.length) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 改变背景为选中状态
setBackgroundColor(Color.GRAY);
selectIndex = index;
if (mOnTouch != null) {
mOnTouch.onTouchAssortListener(assort[selectIndex]);
}
break;
case MotionEvent.ACTION_MOVE:
setBackgroundColor(Color.GRAY);
if (selectIndex != index) {
selectIndex = index;
if (mOnTouch != null) {
mOnTouch.onTouchAssortListener(assort[selectIndex]);
}
}
break;
case MotionEvent.ACTION_UP:
// 透明色
setBackgroundColor(getResources().getColor(
R.color.color_transparent));
if (mOnTouch != null) {
mOnTouch.onTouchAssortUP();
}
selectIndex = -1;
break;
}
} else {
selectIndex = -1;
if (mOnTouch != null) {
mOnTouch.onTouchAssortUP();
}
}
invalidate();
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return super.onTouchEvent(event);
}
}
public class PingYinUtil { /** * 将字符串中的中文转化为拼音,其他字符不变 * * @param inputString * @return */ public static String getPingYin(String inputString) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = inputString.trim().toCharArray(); String output = ""; try { for (int i = 0; i < input.length; i++) { if (java.lang.Character.toString(input[i]). matches("[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper. toHanyuPinyinStringArray(input[i], format); output += temp[0]; } else output += java.lang.Character.toString( input[i]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output; } /** * 汉字转换位汉语拼音首字母,英文字符不变 * @param chines 汉字 * @return 拼音 */ public static String converterToFirstSpell(String chines){ String pinyinName = ""; char[] nameChar = chines.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); 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; } }
/**
* letterview 选中监听 内部类
*
* @author Administrator
*
*/
class MOnTouchAssortListener implements OnTouchAssortListener {
PopupWindow popupWindow = null;
TextView tv_letter;
View layoutView;
public MOnTouchAssortListener() {
layoutView = LayoutInflater.from(MainActivity.this).inflate(
R.layout.main_letterpop_layout, null);
tv_letter = (TextView) layoutView
.findViewById(R.id.letterPop_tv_letter);
layoutView.getBackground().setAlpha(1);
}
@Override
public void onTouchAssortListener(String str) {
int position = mAdapter.getPositionForSection(str.charAt(0));
if(position != -1){
lv_content.setSelection(position);
}
// 为选中的首字母
if (popupWindow == null) {
popupWindow = new PopupWindow(layoutView,
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
false);
// 显示在Activity的根视图中心
popupWindow.showAtLocation(getWindow().getDecorView(),
Gravity.CENTER, 0, 0);
}
tv_letter.setText(str);
}
@Override
public void onTouchAssortUP() {
if (popupWindow != null) {
popupWindow.dismiss();
}
popupWindow = null;
}
}
public class PingYinUtil { /** * 将字符串中的中文转化为拼音,其他字符不变 * * @param inputString * @return */ public static String getPingYin(String inputString) { HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); char[] input = inputString.trim().toCharArray(); String output = ""; try { for (int i = 0; i < input.length; i++) { if (java.lang.Character.toString(input[i]). matches("[\\u4E00-\\u9FA5]+")) { String[] temp = PinyinHelper. toHanyuPinyinStringArray(input[i], format); output += temp[0]; } else output += java.lang.Character.toString( input[i]); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return output; } /** * 汉字转换位汉语拼音首字母,英文字符不变 * @param chines 汉字 * @return 拼音 */ public static String converterToFirstSpell(String chines){ String pinyinName = ""; char[] nameChar = chines.toCharArray(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); 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; } }
本文介绍了一个实用的拼音转换工具类,用于将中文字符转换为拼音,并提供了一个右侧字母导航视图的实现,方便用户快速定位到列表中的特定位置。

9573

被折叠的 条评论
为什么被折叠?



