0

現在、次のコードで onClickListener を使用してカスタム ダブルタップを作成しています。

newImage.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
counterTap++;

Timer t = new Timer("Double tap counter");
t.schedule(new TimerTask() {

@Override
public void run() {
counterTap = 0;
}
}, 0, 300);

if(counterTap >= 2) {
newImage.setVisibility(FrameLayout.GONE);
counterTap = 0;
}

}
});

私が直面している問題は次のとおりです。

ImageView をタップするたびに、イベントが発生します。ただし、ImageView を 2 回目にタップすると、上記のコードは、以前とまったく同じ位置で ImageView をクリックした場合にのみ実行されます。

4

1 に答える 1

2

むしろ使用してonTouchListenerください。メソッドのタッチ リスナーではonTouch、最初にタップしたときに false を返すことができます。これは、イベントが処理されなかったことを意味します。2 回目に true を返すと、タッチ リスナーはイベントを完了として処理します。以下の私の例を参照してください。同様の方法を使用できます

new OnTouchListener() {
    boolean doubleTap = false;

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
        case MotionEvent.ACTION_UP:
            if (!doubleTap) {
                doubleTap = true;
                return false;
            } else {
                return true;
            }
        }
    }
};

これで問題が解決する場合があります。

編集:これはより良いオプションです

private class GestureListener extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onDown(MotionEvent e) {
        return true;
    }

    // double tap event
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        return true;
    }
}

この質問は、最良の回答を得るのにも役立つ場合があります

于 2013-03-19T11:46:47.720 に答える