我现在有点困惑:
我使用 Gesturebuilder 创建了 4 个手势 1 手势是向上滑动 2 手势是向下滑动 3 手势是向左滑动 4 手势是向右滑动
但是当我尝试在正在运行的应用程序上做一个手势时,只能识别左右,而且它的上下接缝也像左右一样,因为该方法给了我作为 toat 的 getsures
向左滑动的吐司显示:up,left
我还在我的活动和 OntouchListener 中使用自定义视图,但我无法让它工作
活动 :
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();
}
}
}
}