我当前正在使用带有以下代码的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上与以前完全相同的位置时执行。
最佳答案
而是使用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;
}
}
This问题也可能帮助您获得最佳答案
关于java - Android自定义双击位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15498309/