2012-02-16 13 views
6

Witam SimpleOnGestureListener nie działa w mojej aplikacji. Tak właśnie ją wdrażam. Może zauważysz, co jest nie tak. Chodzi o to, że debugowanie pokazuje, że aplikacja nigdy nie przechodzi do onFling (...) methode i gdt.onTouchEvent (event); zawsze zwraca false:/ Jakieś pomysły? DziękiSimpleOnGestureListener nigdy nie przechodzi do metody onFling (...).

moja klasa aktywność

public class SimpleActivity extends Activity{ 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.simpleLayout); 

    final ImageView imageView = (ImageView) findViewById(R.id.gggbbb); 
    imageView.setOnTouchListener(new OnFlingGestureListener() { 

     @Override 
     public void onTopToBottom() { 
      System.out.println("top"); 
     } 

     @Override 
     public void onRightToLeft() { 
      System.out.println("right"); 
     } 

     @Override 
     public void onLeftToRight() { 
      System.out.println("left"); 
     } 

     @Override 
     public void onBottomToTop() { 
      System.out.println("bottom"); 
     } 
    }); 



} 


    } 

mój abstrakcyjne Listener

package com.dmd.client.detailsMenus; 

import android.view.GestureDetector; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 

public abstract class OnFlingGestureListener implements OnTouchListener { 

    private final GestureDetector gdt = new GestureDetector(new GestureListener()); 

    @Override 
    public boolean onTouch(final View v, final MotionEvent event) { 
    return gdt.onTouchEvent(event); 
    } 

    private final class GestureListener extends SimpleOnGestureListener { 

    private static final int SWIPE_MIN_DISTANCE = 60; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 100; 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      onRightToLeft(); 
      return true; 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      onLeftToRight(); 
      return true; 
      } 
      if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) { 
      onBottomToTop(); 
      return true; 
      } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) { 
      onTopToBottom(); 
      return true; 
      } 
      return false; 
    } 
    } 

    public abstract void onRightToLeft(); 

    public abstract void onLeftToRight(); 

    public abstract void onBottomToTop(); 

    public abstract void onTopToBottom(); 

} 

Odpowiedz

16

Wymień to wydarzenie:

@Override 
public boolean onTouch(final View v, final MotionEvent event) { 
    gdt.onTouchEvent(event); 
    return true; 
} 

powinno działać

+0

to działa! dzięki –

Powiązane problemy