如何在GestureOverlayView中使用OnGestureListener和OnGesturePerformedListener?

时间:2015-05-07 14:51:22

标签: android gestures

我正在尝试开发一个Android应用程序来检测手势并使用MotionEvent获取这些手势的精细细节(getX,getY,压力等)。但要做到这一点,OnGesturePerformedListener和OnGestureListener都不能同时工作。只有OnGesturePerformedListener正常工作,但它没有显示OnGestureListener方法的任何输出。有没有办法解决这个问题?我的代码:

public class AndroidGestureActivity extends Activity implements
    OnGesturePerformedListener, OnGestureListener{

GestureLibrary mLibrary;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_android_gesture);

    mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures);
    if (!mLibrary.load()) {
        finish();
    }

    GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
    gestures.addOnGesturePerformedListener(this);
}

public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
    // TODO Auto-generated method stub
    ArrayList<Prediction> predictions = mLibrary.recognize(gesture);

    if (predictions.size() > 0) {
        Prediction prediction = (Prediction) predictions.get(0);
        if (prediction.score > 1.0) {
            Toast.makeText(AndroidGestureActivity.this, prediction.name,
                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(AndroidGestureActivity.this,
                    "no matched gesture", Toast.LENGTH_SHORT).show();
        }
    }
}

@Override
public void onGestureStarted(GestureOverlayView overlay, MotionEvent event) {
    // TODO Auto-generated method stub
    Toast.makeText(AndroidGestureActivity.this,
            "STARTED", Toast.LENGTH_SHORT).show();
}

@Override
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
    // TODO Auto-generated method stub
    Toast.makeText(AndroidGestureActivity.this,
            "ONGOING GESTURE", Toast.LENGTH_SHORT).show();
}

@Override
public void onGestureEnded(GestureOverlayView overlay, MotionEvent event) {
    // TODO Auto-generated method stub
    Toast.makeText(AndroidGestureActivity.this,
            "ENDED", Toast.LENGTH_SHORT).show();
}

@Override
public void onGestureCancelled(GestureOverlayView overlay, MotionEvent event) {
    // TODO Auto-generated method stub
    Toast.makeText(AndroidGestureActivity.this,
            "CANCELED", Toast.LENGTH_SHORT).show();
}
}

和xml:

<?xml version="1.0" encoding="utf-8"?>
<android.gesture.GestureOverlayView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/gestures"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:eventsInterceptionEnabled="true"
  android:gestureStrokeType="multiple"
  android:orientation="vertical" >

  <TextView
  android:id="@+id/textView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/text_view" />

 </android.gesture.GestureOverlayView>

0 个答案:

没有答案