我正在尝试开发一个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>