2012-04-11 9 views
3

Ich bin ein bisschen puzzeld jetzt:GestureOverlayView nicht funktioniert

Ich habe 4 Gesten der Gesturebuilder 1 Geste ist ein Swipe nach oben zeigt 2-Geste ist eine Swipe nach unten zeigt 3 Geste ist ein Swipe nach links zeigt 4 Geste ist ein Swipe nach rechts

aber wenn ich versuche, eine Geste auf dem laufenden App zu machen nur links und rechts erkannt wird, sondern auch Nähte es wie oben und unten sind die gleichen wie links und rechts , weil die Methode gibt mir die getsures als toat

der Toast für links zeigt klauen: oben, links

Ich bin auch eine benutzerdefinierte Ansicht in meiner Tätigkeit und eine OntouchListener verwenden, aber ich kann es nicht

Aktivität an der Arbeit:

public class RunActivity extends Activity implements OnTouchListener, OnGesturePerformedListener { 

    static int width; 
    static int height; 

    static boolean reset=false; 


    draw d; 


    //jump 
    private GestureLibrary gestureLib; 


private static Context mContext; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     d = new draw(this); 
     d.setOnTouchListener(this); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
           WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     mContext = this; 


     //get screen size 
     WindowManager wm = (WindowManager) this.getContext().getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 


     width = display.getWidth(); // deprecated 
     height = display.getHeight(); // deprecated 


     //Jump 
     GestureOverlayView gestureOverlayView = new GestureOverlayView(this); 
     View inflate = d; 
     gestureOverlayView.addView(inflate); 
     gestureOverlayView.addOnGesturePerformedListener(this); 
     gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures); 
     if (!gestureLib.load()) { 
      finish(); 
     } 
     setContentView(gestureOverlayView); 

     //setContentView(d); 
    } 
    public static Context getContext(){ 
     return mContext; 
    } 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     Log.d("touch","touched"); 

     if (draw.end == true) 
     { 
     reset=true; 
     } 
     return false; 
    } 
    @Override 
    public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { 
     ArrayList<Prediction> predictions = gestureLib.recognize(gesture); 
     for (Prediction prediction : predictions) { 
      if (prediction.score > 1.0) { 
       Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT) 
         .show(); 
      } 
     } 
    } 

} 

Antwort

0

Löschen Sie Ihre onTouch() Methode, oder mindestens Kette an die Oberklasse statt einfach false zurückgeben und sehen, ob das hilft.

+1

Ich habe das versucht, aber die Hoch/Runter-Geste wird immer noch nicht erkannt – user1293780

+0

Haben Sie das gelöst? – Sarvesh

+0

Dies scheint das gleiche Problem mit meiner Gestenimplementierung zu sein. Irgendwelche Ideen ? – Sarvesh