Ich folge Detecting common gestures Guide. Ich habe android-support-v4.jar
Bibliothek verknüpft GestureDetectorCompat
zu bekommen, und mein Code scheint genau die gleichen wie in der Führung, außer ich bin Gesten in meiner benutzerdefinierten Ansicht, anstatt in der Aktivität Nachweis:GestureDetector.SimpleOnGestureListener und GestureDetectorCompat funktionieren nicht. Was ist falsch an meinem Code?
public class MyGlView extends GLSurfaceView {
private GestureDetectorCompat m_gestureDetector = null;
public MyGlView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MyGlView(Context context) {
super(context);
init(context);
}
private void init(Context context) {
if (m_gestureDetector == null)
m_gestureDetector = new GestureDetectorCompat(context, new MyGestureListener());
setEGLContextClientVersion(2);
setRenderer(new DrawSurfRenderer());
setRenderMode(RENDERMODE_CONTINUOUSLY);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
m_gestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
public class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{
Log.e("", "OnScroll: deltaX=" + String.valueOf(e2.getX() - e1.getX()) + ", deltaY=" + String.valueOf(e2.getY() - e1.getY()));
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
Log.e("", "onSingleTapUp: X=" + String.valueOf(e.getX()) + ", Y=" + String.valueOf(e.getY()));
return true;
}
@Override
public void onLongPress(MotionEvent e)
{
Log.e("", "onLongPress: X=" + String.valueOf(e.getX()) + ", Y=" + String.valueOf(e.getY()));
}
}
Egal was ich tue, mit der Touchscreen, ich bekomme nur onLongPress
. In der Tat, wenn ich schnell tippe (schnell das Berühren und Loslassen des Bildschirms) bekomme ich immer noch onLongPress
etwas nachdem ich meinen Finger vom Bildschirm entferne (vermutlich ist das eine lange Antipper-Verzögerung).
Was ist der Haken?
haben Sie versucht, 'return super.onTouchEvent (event);' zu 'false;'? Und versuchen Sie Ihre Aktionen in der Simple View (wie zB WebView). –
@ R.id.pandacoder: 'return false;' ändert nichts. –
Nach einigen Nachforschungen denke ich, dass Sie versuchen können, die 'onDown'-Methode hinzuzufügen, die zu Ihrer' onTouchEvent'-Methode zurückkehrt. –