-1
这是我为我的onTouchListener使得代码:我需要让我的应用程序支持双指缩放,但不能双击
if(event.getAction() == MotionEvent.ACTION_UP) {
Log.i("", "double touch : " + timeLastTouch + "... time passed: " + (System.currentTimeMillis() - timeLastTouch));
if (System.currentTimeMillis() - timeLastTouch < 500) {
Log.i("", "double touch TRUE");
timeLastTouch = System.currentTimeMillis();
return true;
} else {
Log.i("", "double touch FALSE");
timeLastTouch = System.currentTimeMillis();
return false;
}
}else if(event.getAction() == MotionEvent.ACTION_DOWN) {
Log.i("", "double touch DOWN : " + timeLastTouch + "... time passed: " + (System.currentTimeMillis() - timeLastTouch));
if (System.currentTimeMillis() - timeLastTouch < 500) {
Log.i("", "double touch TRUE DOWN");
timeLastTouch = System.currentTimeMillis();
return true;
}else {
Log.i("", "double touch FALSE DOWN");
return false;
}
}else {
timeLastTouch = System.currentTimeMillis();
Log.i("","double touch ELSE FALSE");
return false;
}
但它不工作。 此视图位于Surface视图上方。现在我只需要将事件发送到SurfaceView进行捏合(捏到放大) 现在我试着制作逻辑,这样如果它有双重触摸,那么我将返回true(它消耗了触摸,所以然后表面查看,没有得到触摸)。 但是,如果我这样做,捏缩放无法使用。 如果我删除这个逻辑,捏缩放,工作,所以我添加了一些日志,并跟着他们。我注意到,对于缩放缩放,你会得到2个向下的事件,并且只有在调用ACTION_MOVE之后。据推测,因为当你捏缩放,你放下2个手指,然后缩放。我的问题是,我的代码设置它,为第二个Action_down消耗触摸,这意味着捏开始缩放不开始。任何ideeas如何解决这个问题?
你可能想看看[现有的捏实施](https://android-arsenal.com/search?q=pinch),看看他们是如何做到的。 – CommonsWare
那么,我不需要执行捏合逻辑。已经存在。在低于我的观点的观点上。我想要的就是让我的观点消耗双击的触感,但不是捏。 (记录event.action)返回:0 0 1(action_down,action_down,action_up)用于双击,并返回0 0 2/1(action_down,action_down,move或up)用于捏。因此我的问题。原因如果我阻止第二个Action_down事件,我将无法获得缩放。如果我不阻止它,它将被发送到下一个视图,并且不会发生 –
因此,我需要一个逻辑来知道在“移动”的MotionEvent被调用之前何时发生捏缩放。我尝试使用event.getIndexCounter()或检查它是否是多点触摸,但它只为我返回1 –