1

私は GestureDetector で遊んでいて、OSX のエミュレーターで実行しているときに onFling メソッドが呼び出されないことに気付きました。

Windows では動作させることができましたが、osx では動作しませんでした。

この投稿の優れたコードを使用しました: グリッド レイアウトでのジェスチャー検出のフリング

これはコードです:

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    gestureDetector = new GestureDetector(new MyGestureDetector());

}



public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    gestureDetector.onTouchEvent(event);
    return false;
}

protected void addFlingSupportToView(int view) {
    // TODO Auto-generated method stub

    View v = (View) findViewById(view);
    v.setOnTouchListener(this);

}

class MyGestureDetector extends SimpleOnGestureListener {

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        try {
            if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                return false;
            // right to left swipe
            if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

            } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

                // Log.i("vampidroid", CryptDetails.this.toString());


                finish();

            }
        } catch (Exception e) {
            // nothing

        }
        return false;
    }
}

問題は、OnTouch が呼び出されても、OnFling イベントが呼び出されないことです。

Windowsでこのコードをいじっていましたが、問題なく動作していました。osxに変更して試してみると、うまくいきませんでした。

デバイスでは、コードは期待どおりに機能します。

これが何であるかについて何か考えがありますか?osxだけに関連していますか?

ここネットで何も見つけられなかったので、これは私だけのものか、誰もチェックしていないのかもしれません。

前もって感謝します。

4

1 に答える 1

0

最近、まったく同じ問題に遭遇しました。残念ながら幸いなことに、この投稿からは何の助けも得られませんでしたが、運が良ければ問題は解決しました。答えは簡単です。エミュレーターでトラックパッドを使用して FLING を実行しないでください。機能しないからです。外付けマウスを接続するだけで、問題なく動作するはずです。

ps私の場合、macbookproでテストしていました。

編集:内部または外部とは何の関係もないことが判明しました..混乱について申し訳ありません。ここでの本当の原因は、少なくとも私にとっては、システム設定で「タブでクリック」を有効にして、ドラッグするために 2 回タブを押しようとしたためです。デフォルトの「押してクリック」は問題なく完全に機能します。

于 2011-12-23T16:29:43.513 に答える