Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2016-12-29 12:24:20 +01:00
commit 870ef13325
2 changed files with 32 additions and 39 deletions

View file

@ -88,43 +88,42 @@ 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;
} }
if (actionCode == ACTION_POINTER_DOWN) { return true;
centerPoint = new PointF((x1 + x2) / 2, (y1 + y2) / 2); } else if(inZoomMode && actionCode == MotionEvent.ACTION_MOVE){
listener.onGestureInit(x1, y1, x2, y2); if(angleDefined) {
listener.onZoomStarted(centerPoint); angleRelative = MapUtils.unifyRotationTo360(angle - angleStarted);
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 false;
} }
zoomRelative = distance / zoomStartedDistance;
listener.onZoomingOrRotating(zoomRelative, angleRelative);
return false;
} }
} catch (Exception e) { } catch (Exception e) {
log.debug("Multi touch exception" , e); //$NON-NLS-1$ log.debug("Multi touch exception" , e); //$NON-NLS-1$

View file

@ -862,12 +862,6 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
layers.get(i).onTouchEvent(event, getCurrentRotatedTileBox()); layers.get(i).onTouchEvent(event, getCurrentRotatedTileBox());
} }
gestureDetector.onTouchEvent(event); gestureDetector.onTouchEvent(event);
} else {
MotionEvent cancelEvent = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis() + 100, MotionEvent.ACTION_CANCEL, 0.0f, 0.0f, 0);
for (int i = layers.size() - 1; i >= 0; i--) {
layers.get(i).onTouchEvent(cancelEvent, getCurrentRotatedTileBox());
}
gestureDetector.onTouchEvent(cancelEvent);
} }
return true; return true;
} }