Improve fling animation (#489)
Easing: add Sin in and out Animator: Smooth Fling MapEventLayer: note for changing initial rotation position
This commit is contained in:
parent
a1cfd80853
commit
5ff9abca1a
@ -342,6 +342,7 @@ public class MapEventLayer extends AbstractMapEventLayer implements InputListene
|
|||||||
mCanTilt = false;
|
mCanTilt = false;
|
||||||
mTwoFingersDone = true;
|
mTwoFingersDone = true;
|
||||||
|
|
||||||
|
/*start from recognized position (smoother rotation)*/
|
||||||
mAngle = rad;
|
mAngle = rad;
|
||||||
} else if (!mDoScale) {
|
} else if (!mDoScale) {
|
||||||
/* reduce pinch trigger by the amount of rotation */
|
/* reduce pinch trigger by the amount of rotation */
|
||||||
@ -359,8 +360,10 @@ public class MapEventLayer extends AbstractMapEventLayer implements InputListene
|
|||||||
/* start rotate again */
|
/* start rotate again */
|
||||||
mDoRotate = true;
|
mDoRotate = true;
|
||||||
mCanRotate = true;
|
mCanRotate = true;
|
||||||
mAngle = rad;
|
|
||||||
mTwoFingersDone = true;
|
mTwoFingersDone = true;
|
||||||
|
|
||||||
|
/*start from recognized position (smoother rotation)*/
|
||||||
|
mAngle = rad;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,6 +426,7 @@ public class MapEventLayer2 extends AbstractMapEventLayer implements InputListen
|
|||||||
mCanTilt = false;
|
mCanTilt = false;
|
||||||
mTwoFingersDone = true;
|
mTwoFingersDone = true;
|
||||||
|
|
||||||
|
/*start from recognized position (smoother rotation)*/
|
||||||
mAngle = rad;
|
mAngle = rad;
|
||||||
} else if (!mDoScale) {
|
} else if (!mDoScale) {
|
||||||
/* reduce pinch trigger by the amount of rotation */
|
/* reduce pinch trigger by the amount of rotation */
|
||||||
@ -443,8 +444,10 @@ public class MapEventLayer2 extends AbstractMapEventLayer implements InputListen
|
|||||||
/* start rotate again */
|
/* start rotate again */
|
||||||
mDoRotate = true;
|
mDoRotate = true;
|
||||||
mCanRotate = true;
|
mCanRotate = true;
|
||||||
mAngle = rad;
|
|
||||||
mTwoFingersDone = true;
|
mTwoFingersDone = true;
|
||||||
|
|
||||||
|
/*start from recognized position (smoother rotation)*/
|
||||||
|
mAngle = rad;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
* Copyright 2016 devemux86
|
* Copyright 2016 devemux86
|
||||||
* Copyright 2016 Izumi Kawashima
|
* Copyright 2016 Izumi Kawashima
|
||||||
* Copyright 2017 Wolfgang Schramm
|
* Copyright 2017 Wolfgang Schramm
|
||||||
|
* Copyright 2018 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -247,7 +248,7 @@ public class Animator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
animStart(duration, ANIM_FLING, Easing.Type.LINEAR);
|
animStart(duration, ANIM_FLING, Easing.Type.SINE_OUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void animStart(float duration, int state, Easing.Type easingType) {
|
private void animStart(float duration, int state, Easing.Type easingType) {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2016 Izumi Kawashima
|
* Copyright 2016 Izumi Kawashima
|
||||||
|
* Copyright 2018 Gustl22
|
||||||
*
|
*
|
||||||
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
|
||||||
*
|
*
|
||||||
@ -22,6 +23,8 @@ public class Easing {
|
|||||||
public enum Type {
|
public enum Type {
|
||||||
LINEAR,
|
LINEAR,
|
||||||
SINE_INOUT,
|
SINE_INOUT,
|
||||||
|
SINE_IN,
|
||||||
|
SINE_OUT,
|
||||||
EXPO_OUT,
|
EXPO_OUT,
|
||||||
QUAD_INOUT,
|
QUAD_INOUT,
|
||||||
CUBIC_INOUT,
|
CUBIC_INOUT,
|
||||||
@ -48,6 +51,12 @@ public class Easing {
|
|||||||
case SINE_INOUT:
|
case SINE_INOUT:
|
||||||
adv = sineInout(x, t, b, c, d);
|
adv = sineInout(x, t, b, c, d);
|
||||||
break;
|
break;
|
||||||
|
case SINE_IN:
|
||||||
|
adv = sineIn(x, t, b, c, d);
|
||||||
|
break;
|
||||||
|
case SINE_OUT:
|
||||||
|
adv = sineOut(x, t, b, c, d);
|
||||||
|
break;
|
||||||
case EXPO_OUT:
|
case EXPO_OUT:
|
||||||
adv = expoOut(x, t, b, c, d);
|
adv = expoOut(x, t, b, c, d);
|
||||||
break;
|
break;
|
||||||
@ -78,6 +87,14 @@ public class Easing {
|
|||||||
return -c / 2 * (float) (Math.cos(Math.PI * t / d) - 1) + b;
|
return -c / 2 * (float) (Math.cos(Math.PI * t / d) - 1) + b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static private float sineIn(float x, float t, float b, float c, float d) {
|
||||||
|
return -c * (float) Math.cos(t / d * (Math.PI / 2)) + c + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
static private float sineOut(float x, float t, float b, float c, float d) {
|
||||||
|
return c * (float) Math.sin(t / d * (Math.PI / 2)) + b;
|
||||||
|
}
|
||||||
|
|
||||||
static private float expoOut(float x, float t, float b, float c, float d) {
|
static private float expoOut(float x, float t, float b, float c, float d) {
|
||||||
return (t == d) ? b + c : c * (float) (-Math.pow(2, -10 * x) + 1) + b;
|
return (t == d) ? b + c : c * (float) (-Math.pow(2, -10 * x) + 1) + b;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user