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 时,上面的代码只有在点击 ImageView 上与之前完全相同的位置时才会执行。

4

1 回答 1

2

而是使用onTouchListener. 在onTouch方法的触摸监听器中,您可以在第一次点击时返回 false,这意味着事件未处理,第二次返回 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 回答