Files
rr3-apk/decompiled/sources/androidx/core/view/VelocityTrackerFallback.java
Daniel Elliott f9d20bb3fc Add decompiled APK source code (JADX)
- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:52:23 -08:00

112 lines
3.6 KiB
Java

package androidx.core.view;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
/* loaded from: classes.dex */
class VelocityTrackerFallback {
private static final long ASSUME_POINTER_STOPPED_MS = 40;
private static final int HISTORY_SIZE = 20;
private static final long RANGE_MS = 100;
private final float[] mMovements = new float[20];
private final long[] mEventTimes = new long[20];
private float mLastComputedVelocity = 0.0f;
private int mDataPointsBufferSize = 0;
private int mDataPointsBufferLastUsedIndex = 0;
private void clear() {
this.mDataPointsBufferSize = 0;
this.mLastComputedVelocity = 0.0f;
}
public float getAxisVelocity(int i) {
if (i != 26) {
return 0.0f;
}
return this.mLastComputedVelocity;
}
public void addMovement(@NonNull MotionEvent motionEvent) {
long eventTime = motionEvent.getEventTime();
if (this.mDataPointsBufferSize != 0 && eventTime - this.mEventTimes[this.mDataPointsBufferLastUsedIndex] > ASSUME_POINTER_STOPPED_MS) {
clear();
}
int i = (this.mDataPointsBufferLastUsedIndex + 1) % 20;
this.mDataPointsBufferLastUsedIndex = i;
int i2 = this.mDataPointsBufferSize;
if (i2 != 20) {
this.mDataPointsBufferSize = i2 + 1;
}
this.mMovements[i] = motionEvent.getAxisValue(26);
this.mEventTimes[this.mDataPointsBufferLastUsedIndex] = eventTime;
}
public void computeCurrentVelocity(int i) {
computeCurrentVelocity(i, Float.MAX_VALUE);
}
public void computeCurrentVelocity(int i, float f) {
float currentVelocity = getCurrentVelocity() * i;
this.mLastComputedVelocity = currentVelocity;
if (currentVelocity < (-Math.abs(f))) {
this.mLastComputedVelocity = -Math.abs(f);
} else if (this.mLastComputedVelocity > Math.abs(f)) {
this.mLastComputedVelocity = Math.abs(f);
}
}
private float getCurrentVelocity() {
long[] jArr;
long j;
int i = this.mDataPointsBufferSize;
if (i < 2) {
return 0.0f;
}
int i2 = this.mDataPointsBufferLastUsedIndex;
int i3 = ((i2 + 20) - (i - 1)) % 20;
long j2 = this.mEventTimes[i2];
while (true) {
jArr = this.mEventTimes;
j = jArr[i3];
if (j2 - j <= RANGE_MS) {
break;
}
this.mDataPointsBufferSize--;
i3 = (i3 + 1) % 20;
}
int i4 = this.mDataPointsBufferSize;
if (i4 < 2) {
return 0.0f;
}
if (i4 == 2) {
int i5 = (i3 + 1) % 20;
if (j == jArr[i5]) {
return 0.0f;
}
return this.mMovements[i5] / (r2 - j);
}
float f = 0.0f;
int i6 = 0;
for (int i7 = 0; i7 < this.mDataPointsBufferSize - 1; i7++) {
int i8 = i7 + i3;
long[] jArr2 = this.mEventTimes;
long j3 = jArr2[i8 % 20];
int i9 = (i8 + 1) % 20;
if (jArr2[i9] != j3) {
i6++;
float kineticEnergyToVelocity = kineticEnergyToVelocity(f);
float f2 = this.mMovements[i9] / (this.mEventTimes[i9] - j3);
f += (f2 - kineticEnergyToVelocity) * Math.abs(f2);
if (i6 == 1) {
f *= 0.5f;
}
}
}
return kineticEnergyToVelocity(f);
}
private static float kineticEnergyToVelocity(float f) {
return (f < 0.0f ? -1.0f : 1.0f) * ((float) Math.sqrt(Math.abs(f) * 2.0f));
}
}