3

私は今ちょっと困惑しています:

Gesturebuilder を使用して 4 つのジェスチャーを作成しました 1 ジェスチャーは上向きのスワイプです 2 ジェスチャーは下向きのスワイプです 3 ジェスチャーは左向きのスワイプです 4 ジェスチャーは右向きのスワイプです

しかし、実行中のアプリでジェスチャを作成しようとすると、左右のみが認識されますが、上下の継ぎ目も左右と同じです。

左にスワイプするためのトーストには、上、左が表示されます

アクティビティと 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();
            }
        }
    }

}
4

1 に答える 1

0

メソッドを削除するonTouch()か、単に を返すのではなく、少なくともスーパークラスにチェーンして、falseそれが役立つかどうかを確認してください。

于 2012-04-11T13:03:48.880 に答える