问题
I am trying to develop a feature where a single tap of an item will call an Intent to go to another Activity, and a long press OR double tap of the item does something else, such as allow you to edit the text.
So far I am only able to get both to happen at the same time but not individually. Does anyone have any ideas?
public boolean onTouchEvent(MotionEvent e) {
return gestureScanner.onTouchEvent(e);
}
public boolean onSingleTapConfirmed(MotionEvent e) {
Intent i = new Intent(getContext(), SecondClass.class);
getContext().startActivity(i);
return true;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; }
public void onLongPress(MotionEvent e) {
Toast.makeText(getContext(), "Edit feature here", Toast.LENGTH_SHORT).show();
}
回答1:
I managed to solve the problem. It turned out all I needed to do is change the return value from false
to true
in the onDown()
handler.
public boolean onTouchEvent(MotionEvent e) {
return gestureScanner.onTouchEvent(e);
}
public boolean onSingleTapConfirmed(MotionEvent e) {
Intent i = new Intent(getContext(), SecondClass.class);
getContext().startActivity(i);
return true;
}
public boolean onDown(MotionEvent e) { return true; }
public void onLongPress(MotionEvent e) {
Toast.makeText(getContext(), "Edit Feature", Toast.LENGTH_SHORT).show();
}
回答2:
Use a GestureDetector, the SimpleOnGestureListener has the methods that you want with onSingleTapConfirmed()
, onLongPress()
, and onDoubleTap()
.
来源:https://stackoverflow.com/questions/13324250/android-two-different-events-for-single-tap-and-long-press-double-tap