2023-09-19 23:22:21 +02:00
|
|
|
package android.view;
|
|
|
|
|
|
|
|
|
|
public class VelocityTracker {
|
|
|
|
|
|
|
|
|
|
public static VelocityTracker obtain() {
|
|
|
|
|
return new VelocityTracker();
|
|
|
|
|
}
|
2023-10-08 17:51:41 +02:00
|
|
|
|
2024-02-25 17:41:26 +01:00
|
|
|
private float startX;
|
|
|
|
|
private float startY;
|
|
|
|
|
private long startEventTime;
|
|
|
|
|
private float currentX;
|
|
|
|
|
private float currentY;
|
|
|
|
|
private long currentEventTime;
|
|
|
|
|
|
|
|
|
|
public void addMovement(MotionEvent event) {
|
|
|
|
|
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
|
|
|
|
startX = currentX = event.getX();
|
|
|
|
|
startY = currentY = event.getY();
|
|
|
|
|
startEventTime = currentEventTime = event.getEventTime();
|
|
|
|
|
} else {
|
|
|
|
|
currentX = event.getX();
|
|
|
|
|
currentY = event.getY();
|
|
|
|
|
currentEventTime = event.getEventTime();
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-08 17:51:41 +02:00
|
|
|
|
|
|
|
|
public void recycle() {}
|
2023-10-30 22:35:31 +01:00
|
|
|
|
|
|
|
|
public void computeCurrentVelocity(int units, float maxVelocity) {}
|
2024-02-24 18:50:03 +01:00
|
|
|
public void computeCurrentVelocity(int units) {}
|
2023-10-30 22:35:31 +01:00
|
|
|
|
2024-02-25 17:41:26 +01:00
|
|
|
public float getXVelocity(int id) {
|
|
|
|
|
if (currentEventTime == startEventTime)
|
|
|
|
|
return 0.f;
|
|
|
|
|
return (currentX - startX) / (currentEventTime - startEventTime) * 1000;
|
|
|
|
|
}
|
|
|
|
|
public float getYVelocity(int id) {
|
|
|
|
|
if (currentEventTime == startEventTime)
|
|
|
|
|
return 0.f;
|
|
|
|
|
return (currentY - startY) / (currentEventTime - startEventTime) * 1000;
|
|
|
|
|
}
|
2023-10-30 22:35:31 +01:00
|
|
|
|
|
|
|
|
public void clear() {}
|
2023-09-19 23:22:21 +02:00
|
|
|
}
|