【发布时间】:2019-08-05 21:17:30
【问题描述】:
我正在制作一个应用程序,您可以在其中触摸屏幕上的特定单词,然后该单词就会发音。但是当我点击任何单词时,它至少会发音两次,如果我将手指放在单词上,它会发音很多次,我不希望这样。我可以将触摸检测为仅在屏幕上点击吗?如果用户按住或长按,我希望发生一些完全不同的事情,例如复制单词。
我尝试根据某人的代码执行此操作,但 if 和 else 语句都运行!
@Override
public boolean onTouchEvent(MotionEvent event) {
int touchX = Math.round(event.getX());
int touchY = Math.round(event.getY());
long startClickTime = System.currentTimeMillis();
//words are surrounded with rect objects because i'm using the TextRecognition library that Google provided
for(int x=0; x< rects.size();x++) {
if (System.currentTimeMillis() - startClickTime < ViewConfiguration.getTapTimeout()) {
// Touch was a simple tap. Do whatever.
Log.i("TTS", "Touch was a simple tap!");
if (rects.get(x).contains(touchX, touchY)) {
// a word has been clicked -> some code to pronounce the word
return true;
} else {
// Touch was a not a simple tap.
Log.i("TTS", "Touch was a not a simple tap!");
}
}
}
return super.onTouchEvent(event);
}
我还尝试了onDown()、onShowPress()、onSingleTapUp() 和onLongPress() 方法,但它们都没有做任何事情,我不知道为什么我应该更好地使用它们而不是onTouchEvent() 方法。
【问题讨论】: