int touchIndex = -1;
@Override
public boolean onTouchEvent(MotionEvent event) {
int y;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
y = (int) event.getY();
for (int i = 0; i < LETTERS.length; i++) {
if (y > i * cellHeight && y < (i + 1) * cellHeight) {
if (touchIndex != i) {
Log.e(TAG, LETTERS[i]);
Toast.makeText(getContext(), LETTERS[i], 0).show();
touchIndex = i;
}
break;
}
}
break;
case MotionEvent.ACTION_MOVE:
y = (int) event.getY();
for (int i = 0; i < LETTERS.length; i++) {
if (y > i * cellHeight && y < (i + 1) * cellHeight) {
if (touchIndex != i) {
Log.e(TAG, LETTERS[i]);
Toast.makeText(getContext(), LETTERS[i], 0).show();
touchIndex = i;
}
break;
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
returntrue;
}
3. 提供回调方法
private OnIndexChangedListener listener;
publicvoidsetOnIndexChangedListener(OnIndexChangedListener listener) {
this.listener = listener;
}
publicinterface OnIndexChangedListener {
void onIndexChanged(String index);
}
//触摸事件的操作通过接口让调用者去实现
@Override
public final boolean onTouchEvent(MotionEvent event) {
int y;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
y = (int) event.getY();
for (int i = 0; i < LETTERS.length; i++) {
if (y > i * cellHeight && y < (i + 1) * cellHeight) {
if (touchIndex != i) {
if (listener != null) {
listener.onIndexChanged(LETTERS[i]);
}
touchIndex = i;
}
break;
}
}
break;
case MotionEvent.ACTION_MOVE:
y = (int) event.getY();
for (int i = 0; i < LETTERS.length; i++) {
if (y > i * cellHeight && y < (i + 1) * cellHeight) {
if (touchIndex != i) {
if (listener != null) {
listener.onIndexChanged(LETTERS[i]);
}
touchIndex = i;
}
break;
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
returntrue;
}
4. 汉字转拼音
需要添加 pinyin4j-2.5.0.jar
/**
* 描述:汉字转拼音的工具类
* 作者 mjd
* 日期:2015/12/10 12:50
*/publicclassPinYinUtils {publicstatic String getPinYin(String hanZi) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
StringBuilder sb = new StringBuilder();
char[] charArray = hanZi.toCharArray();
for (int i = 0; i < charArray.length; i++) {
char c = charArray[i];
// 如果是空格, 跳过if (Character.isWhitespace(c)) {
continue;
}
if (c >= -127 && c < 128) {
// 肯定不是汉字
sb.append(c);
} else {
String s = "";
try {
// 通过char得到拼音集合. 单 -> dan, shan
s = PinyinHelper.toHanyuPinyinStringArray(c, format)[0];
sb.append(s);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
sb.append(s);
}
}
}
return sb.toString();
}
}