的Android定制的双抽头位置
问题描述:
我目前正在创建使用onClickListener用下面的代码自定义双击:的Android定制的双抽头位置
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;
}
}
}
};
这可能会解决您的问题。
编辑:这是一个更好的opotion
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问题也可能会有助于你得到最好的答案
为什么你就不能使用Android GestureDetector? – Blackbelt 2013-03-19 11:37:32
@blackbelt是对的。使用手势检测器。已经有一个处理双击 – Neil 2013-03-19 11:52:14
我尝试使用GestureDetector很好,但我现在面临相同问题的方法。似乎第二次敲击必须与第一次敲击的位置完全相同,即使我将侦听器添加到ImageView中。 – James 2013-03-19 12:35:48