make MultiTouch code more restrictive
This commit is contained in:
parent
f7cc56be00
commit
3e173eddd1
1 changed files with 33 additions and 34 deletions
|
@ -88,44 +88,43 @@ public class MultiTouchSupport {
|
||||||
if(inZoomMode){
|
if(inZoomMode){
|
||||||
listener.onZoomOrRotationEnded(zoomRelative, angleRelative);
|
listener.onZoomOrRotationEnded(zoomRelative, angleRelative);
|
||||||
inZoomMode = false;
|
inZoomMode = false;
|
||||||
//return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
} else if (pointCount == 2) {
|
||||||
Float x1 = (Float) getX.invoke(event, 0);
|
Float x1 = (Float) getX.invoke(event, 0);
|
||||||
Float x2 = (Float) getX.invoke(event, 1);
|
Float x2 = (Float) getX.invoke(event, 1);
|
||||||
Float y1 = (Float) getY.invoke(event, 0);
|
Float y1 = (Float) getY.invoke(event, 0);
|
||||||
Float y2 = (Float) getY.invoke(event, 1);
|
Float y2 = (Float) getY.invoke(event, 1);
|
||||||
float distance = (float) Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
|
float distance = (float) Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
|
||||||
float angle = 0;
|
float angle = 0;
|
||||||
boolean angleDefined = false;
|
boolean angleDefined = false;
|
||||||
if(x1 != x2 || y1 != y2) {
|
if(x1 != x2 || y1 != y2) {
|
||||||
angleDefined = true;
|
angleDefined = true;
|
||||||
angle = (float) (Math.atan2(y2 - y1, x2 -x1) * 180 / Math.PI);
|
angle = (float) (Math.atan2(y2 - y1, x2 -x1) * 180 / Math.PI);
|
||||||
}
|
|
||||||
if (actionCode == ACTION_POINTER_DOWN) {
|
|
||||||
centerPoint = new PointF((x1 + x2) / 2, (y1 + y2) / 2);
|
|
||||||
listener.onGestureInit(x1, y1, x2, y2);
|
|
||||||
listener.onZoomStarted(centerPoint);
|
|
||||||
zoomStartedDistance = distance;
|
|
||||||
angleStarted = angle;
|
|
||||||
inZoomMode = true;
|
|
||||||
return true;
|
|
||||||
} else if(actionCode == ACTION_POINTER_UP){
|
|
||||||
if(inZoomMode){
|
|
||||||
listener.onZoomOrRotationEnded(zoomRelative, angleRelative);
|
|
||||||
inZoomMode = false;
|
|
||||||
}
|
}
|
||||||
return true;
|
if (actionCode == ACTION_POINTER_DOWN) {
|
||||||
} else if(inZoomMode && actionCode == MotionEvent.ACTION_MOVE){
|
centerPoint = new PointF((x1 + x2) / 2, (y1 + y2) / 2);
|
||||||
if(angleDefined) {
|
listener.onGestureInit(x1, y1, x2, y2);
|
||||||
angleRelative = MapUtils.unifyRotationTo360(angle - angleStarted);
|
listener.onZoomStarted(centerPoint);
|
||||||
|
zoomStartedDistance = distance;
|
||||||
|
angleStarted = angle;
|
||||||
|
inZoomMode = true;
|
||||||
|
return true;
|
||||||
|
//} else if(actionCode == ACTION_POINTER_UP){
|
||||||
|
// if(inZoomMode){
|
||||||
|
// listener.onZoomOrRotationEnded(zoomRelative, angleRelative);
|
||||||
|
// inZoomMode = false;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
|
} else if(inZoomMode && actionCode == MotionEvent.ACTION_MOVE){
|
||||||
|
if(angleDefined) {
|
||||||
|
angleRelative = MapUtils.unifyRotationTo360(angle - angleStarted);
|
||||||
|
}
|
||||||
|
zoomRelative = distance / zoomStartedDistance;
|
||||||
|
listener.onZoomingOrRotating(zoomRelative, angleRelative);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
zoomRelative = distance / zoomStartedDistance;
|
|
||||||
listener.onZoomingOrRotating(zoomRelative, angleRelative);
|
|
||||||
return true;
|
|
||||||
} else if (pointCount >= 2) {
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.debug("Multi touch exception" , e); //$NON-NLS-1$
|
log.debug("Multi touch exception" , e); //$NON-NLS-1$
|
||||||
|
|
Loading…
Reference in a new issue