Initial commit
This commit is contained in:
66
sources/androidx/customview/view/AbsSavedState.java
Normal file
66
sources/androidx/customview/view/AbsSavedState.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package androidx.customview.view;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public abstract class AbsSavedState implements Parcelable {
|
||||
private final Parcelable mSuperState;
|
||||
public static final AbsSavedState EMPTY_STATE = new AbsSavedState() { // from class: androidx.customview.view.AbsSavedState.1
|
||||
};
|
||||
public static final Parcelable.Creator<AbsSavedState> CREATOR = new Parcelable.ClassLoaderCreator<AbsSavedState>() { // from class: androidx.customview.view.AbsSavedState.2
|
||||
@Override // android.os.Parcelable.Creator
|
||||
public AbsSavedState[] newArray(int i) {
|
||||
return new AbsSavedState[i];
|
||||
}
|
||||
|
||||
/* JADX WARN: Can't rename method to resolve collision */
|
||||
@Override // android.os.Parcelable.ClassLoaderCreator
|
||||
public AbsSavedState createFromParcel(Parcel parcel, ClassLoader classLoader) {
|
||||
if (parcel.readParcelable(classLoader) == null) {
|
||||
return AbsSavedState.EMPTY_STATE;
|
||||
}
|
||||
throw new IllegalStateException("superState must be null");
|
||||
}
|
||||
|
||||
@Override // android.os.Parcelable.Creator
|
||||
public AbsSavedState createFromParcel(Parcel parcel) {
|
||||
return createFromParcel(parcel, (ClassLoader) null);
|
||||
}
|
||||
};
|
||||
|
||||
@Override // android.os.Parcelable
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public final Parcelable getSuperState() {
|
||||
return this.mSuperState;
|
||||
}
|
||||
|
||||
@Override // android.os.Parcelable
|
||||
public void writeToParcel(Parcel parcel, int i) {
|
||||
parcel.writeParcelable(this.mSuperState, i);
|
||||
}
|
||||
|
||||
private AbsSavedState() {
|
||||
this.mSuperState = null;
|
||||
}
|
||||
|
||||
protected AbsSavedState(Parcelable parcelable) {
|
||||
if (parcelable != null) {
|
||||
this.mSuperState = parcelable == EMPTY_STATE ? null : parcelable;
|
||||
return;
|
||||
}
|
||||
throw new IllegalArgumentException("superState must not be null");
|
||||
}
|
||||
|
||||
protected AbsSavedState(Parcel parcel) {
|
||||
this(parcel, null);
|
||||
}
|
||||
|
||||
protected AbsSavedState(Parcel parcel, ClassLoader classLoader) {
|
||||
Parcelable readParcelable = parcel.readParcelable(classLoader);
|
||||
this.mSuperState = readParcelable == null ? EMPTY_STATE : readParcelable;
|
||||
}
|
||||
}
|
665
sources/androidx/customview/widget/ViewDragHelper.java
Normal file
665
sources/androidx/customview/widget/ViewDragHelper.java
Normal file
@@ -0,0 +1,665 @@
|
||||
package androidx.customview.widget;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.VelocityTracker;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.animation.Interpolator;
|
||||
import android.widget.OverScroller;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import java.util.Arrays;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class ViewDragHelper {
|
||||
private static final Interpolator w = new Interpolator() { // from class: androidx.customview.widget.ViewDragHelper.1
|
||||
@Override // android.animation.TimeInterpolator
|
||||
public float getInterpolation(float f) {
|
||||
float f2 = f - 1.0f;
|
||||
return (f2 * f2 * f2 * f2 * f2) + 1.0f;
|
||||
}
|
||||
};
|
||||
private int a;
|
||||
private int b;
|
||||
private float[] d;
|
||||
private float[] e;
|
||||
private float[] f;
|
||||
private float[] g;
|
||||
private int[] h;
|
||||
private int[] i;
|
||||
private int[] j;
|
||||
private int k;
|
||||
private VelocityTracker l;
|
||||
private float m;
|
||||
private float n;
|
||||
private int o;
|
||||
private int p;
|
||||
private OverScroller q;
|
||||
private final Callback r;
|
||||
private View s;
|
||||
private boolean t;
|
||||
private final ViewGroup u;
|
||||
private int c = -1;
|
||||
private final Runnable v = new Runnable() { // from class: androidx.customview.widget.ViewDragHelper.2
|
||||
@Override // java.lang.Runnable
|
||||
public void run() {
|
||||
ViewDragHelper.this.b(0);
|
||||
}
|
||||
};
|
||||
|
||||
public static abstract class Callback {
|
||||
public int a(int i) {
|
||||
return i;
|
||||
}
|
||||
|
||||
public int a(View view) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public abstract int a(View view, int i, int i2);
|
||||
|
||||
public void a(int i, int i2) {
|
||||
}
|
||||
|
||||
public void a(View view, float f, float f2) {
|
||||
}
|
||||
|
||||
public void a(View view, int i) {
|
||||
}
|
||||
|
||||
public abstract void a(View view, int i, int i2, int i3, int i4);
|
||||
|
||||
public int b(View view) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public abstract int b(View view, int i, int i2);
|
||||
|
||||
public void b(int i, int i2) {
|
||||
}
|
||||
|
||||
public boolean b(int i) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public abstract boolean b(View view, int i);
|
||||
|
||||
public void c(int i) {
|
||||
}
|
||||
}
|
||||
|
||||
private ViewDragHelper(Context context, ViewGroup viewGroup, Callback callback) {
|
||||
if (viewGroup == null) {
|
||||
throw new IllegalArgumentException("Parent view may not be null");
|
||||
}
|
||||
if (callback == null) {
|
||||
throw new IllegalArgumentException("Callback may not be null");
|
||||
}
|
||||
this.u = viewGroup;
|
||||
this.r = callback;
|
||||
ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
|
||||
this.o = (int) ((context.getResources().getDisplayMetrics().density * 20.0f) + 0.5f);
|
||||
this.b = viewConfiguration.getScaledTouchSlop();
|
||||
this.m = viewConfiguration.getScaledMaximumFlingVelocity();
|
||||
this.n = viewConfiguration.getScaledMinimumFlingVelocity();
|
||||
this.q = new OverScroller(context, w);
|
||||
}
|
||||
|
||||
public static ViewDragHelper a(ViewGroup viewGroup, Callback callback) {
|
||||
return new ViewDragHelper(viewGroup.getContext(), viewGroup, callback);
|
||||
}
|
||||
|
||||
private void d() {
|
||||
float[] fArr = this.d;
|
||||
if (fArr == null) {
|
||||
return;
|
||||
}
|
||||
Arrays.fill(fArr, 0.0f);
|
||||
Arrays.fill(this.e, 0.0f);
|
||||
Arrays.fill(this.f, 0.0f);
|
||||
Arrays.fill(this.g, 0.0f);
|
||||
Arrays.fill(this.h, 0);
|
||||
Arrays.fill(this.i, 0);
|
||||
Arrays.fill(this.j, 0);
|
||||
this.k = 0;
|
||||
}
|
||||
|
||||
private void e() {
|
||||
this.l.computeCurrentVelocity(1000, this.m);
|
||||
a(a(this.l.getXVelocity(this.c), this.n, this.m), a(this.l.getYVelocity(this.c), this.n, this.m));
|
||||
}
|
||||
|
||||
public float b() {
|
||||
return this.n;
|
||||
}
|
||||
|
||||
public int c() {
|
||||
return this.b;
|
||||
}
|
||||
|
||||
public static ViewDragHelper a(ViewGroup viewGroup, float f, Callback callback) {
|
||||
ViewDragHelper a = a(viewGroup, callback);
|
||||
a.b = (int) (a.b * (1.0f / f));
|
||||
return a;
|
||||
}
|
||||
|
||||
public boolean b(View view, int i, int i2) {
|
||||
this.s = view;
|
||||
this.c = -1;
|
||||
boolean b = b(i, i2, 0, 0);
|
||||
if (!b && this.a == 0 && this.s != null) {
|
||||
this.s = null;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
public boolean c(int i, int i2) {
|
||||
if (this.t) {
|
||||
return b(i, i2, (int) this.l.getXVelocity(this.c), (int) this.l.getYVelocity(this.c));
|
||||
}
|
||||
throw new IllegalStateException("Cannot settleCapturedViewAt outside of a call to Callback#onViewReleased");
|
||||
}
|
||||
|
||||
public void a(View view, int i) {
|
||||
if (view.getParent() == this.u) {
|
||||
this.s = view;
|
||||
this.c = i;
|
||||
this.r.a(view, i);
|
||||
b(1);
|
||||
return;
|
||||
}
|
||||
throw new IllegalArgumentException("captureChildView: parameter must be a descendant of the ViewDragHelper's tracked parent view (" + this.u + ")");
|
||||
}
|
||||
|
||||
private boolean b(int i, int i2, int i3, int i4) {
|
||||
int left = this.s.getLeft();
|
||||
int top = this.s.getTop();
|
||||
int i5 = i - left;
|
||||
int i6 = i2 - top;
|
||||
if (i5 == 0 && i6 == 0) {
|
||||
this.q.abortAnimation();
|
||||
b(0);
|
||||
return false;
|
||||
}
|
||||
this.q.startScroll(left, top, i5, i6, a(this.s, i5, i6, i3, i4));
|
||||
b(2);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void c(int i) {
|
||||
if (this.d == null || !a(i)) {
|
||||
return;
|
||||
}
|
||||
this.d[i] = 0.0f;
|
||||
this.e[i] = 0.0f;
|
||||
this.f[i] = 0.0f;
|
||||
this.g[i] = 0.0f;
|
||||
this.h[i] = 0;
|
||||
this.i[i] = 0;
|
||||
this.j[i] = 0;
|
||||
this.k = (~(1 << i)) & this.k;
|
||||
}
|
||||
|
||||
private boolean e(int i) {
|
||||
if (a(i)) {
|
||||
return true;
|
||||
}
|
||||
Log.e("ViewDragHelper", "Ignoring pointerId=" + i + " because ACTION_DOWN was not received for this pointer before ACTION_MOVE. It likely happened because ViewDragHelper did not receive all the events in the event stream.");
|
||||
return false;
|
||||
}
|
||||
|
||||
private void d(int i) {
|
||||
float[] fArr = this.d;
|
||||
if (fArr == null || fArr.length <= i) {
|
||||
int i2 = i + 1;
|
||||
float[] fArr2 = new float[i2];
|
||||
float[] fArr3 = new float[i2];
|
||||
float[] fArr4 = new float[i2];
|
||||
float[] fArr5 = new float[i2];
|
||||
int[] iArr = new int[i2];
|
||||
int[] iArr2 = new int[i2];
|
||||
int[] iArr3 = new int[i2];
|
||||
float[] fArr6 = this.d;
|
||||
if (fArr6 != null) {
|
||||
System.arraycopy(fArr6, 0, fArr2, 0, fArr6.length);
|
||||
float[] fArr7 = this.e;
|
||||
System.arraycopy(fArr7, 0, fArr3, 0, fArr7.length);
|
||||
float[] fArr8 = this.f;
|
||||
System.arraycopy(fArr8, 0, fArr4, 0, fArr8.length);
|
||||
float[] fArr9 = this.g;
|
||||
System.arraycopy(fArr9, 0, fArr5, 0, fArr9.length);
|
||||
int[] iArr4 = this.h;
|
||||
System.arraycopy(iArr4, 0, iArr, 0, iArr4.length);
|
||||
int[] iArr5 = this.i;
|
||||
System.arraycopy(iArr5, 0, iArr2, 0, iArr5.length);
|
||||
int[] iArr6 = this.j;
|
||||
System.arraycopy(iArr6, 0, iArr3, 0, iArr6.length);
|
||||
}
|
||||
this.d = fArr2;
|
||||
this.e = fArr3;
|
||||
this.f = fArr4;
|
||||
this.g = fArr5;
|
||||
this.h = iArr;
|
||||
this.i = iArr2;
|
||||
this.j = iArr3;
|
||||
}
|
||||
}
|
||||
|
||||
public void a() {
|
||||
this.c = -1;
|
||||
d();
|
||||
VelocityTracker velocityTracker = this.l;
|
||||
if (velocityTracker != null) {
|
||||
velocityTracker.recycle();
|
||||
this.l = null;
|
||||
}
|
||||
}
|
||||
|
||||
private int b(int i, int i2, int i3) {
|
||||
int abs;
|
||||
if (i == 0) {
|
||||
return 0;
|
||||
}
|
||||
int width = this.u.getWidth();
|
||||
float f = width / 2;
|
||||
float a = f + (a(Math.min(1.0f, Math.abs(i) / width)) * f);
|
||||
int abs2 = Math.abs(i2);
|
||||
if (abs2 > 0) {
|
||||
abs = Math.round(Math.abs(a / abs2) * 1000.0f) * 4;
|
||||
} else {
|
||||
abs = (int) (((Math.abs(i) / i3) + 1.0f) * 256.0f);
|
||||
}
|
||||
return Math.min(abs, 600);
|
||||
}
|
||||
|
||||
private int a(View view, int i, int i2, int i3, int i4) {
|
||||
float f;
|
||||
float f2;
|
||||
float f3;
|
||||
float f4;
|
||||
int a = a(i3, (int) this.n, (int) this.m);
|
||||
int a2 = a(i4, (int) this.n, (int) this.m);
|
||||
int abs = Math.abs(i);
|
||||
int abs2 = Math.abs(i2);
|
||||
int abs3 = Math.abs(a);
|
||||
int abs4 = Math.abs(a2);
|
||||
int i5 = abs3 + abs4;
|
||||
int i6 = abs + abs2;
|
||||
if (a != 0) {
|
||||
f = abs3;
|
||||
f2 = i5;
|
||||
} else {
|
||||
f = abs;
|
||||
f2 = i6;
|
||||
}
|
||||
float f5 = f / f2;
|
||||
if (a2 != 0) {
|
||||
f3 = abs4;
|
||||
f4 = i5;
|
||||
} else {
|
||||
f3 = abs2;
|
||||
f4 = i6;
|
||||
}
|
||||
return (int) ((b(i, a, this.r.a(view)) * f5) + (b(i2, a2, this.r.b(view)) * (f3 / f4)));
|
||||
}
|
||||
|
||||
private void c(MotionEvent motionEvent) {
|
||||
int pointerCount = motionEvent.getPointerCount();
|
||||
for (int i = 0; i < pointerCount; i++) {
|
||||
int pointerId = motionEvent.getPointerId(i);
|
||||
if (e(pointerId)) {
|
||||
float x = motionEvent.getX(i);
|
||||
float y = motionEvent.getY(i);
|
||||
this.f[pointerId] = x;
|
||||
this.g[pointerId] = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void b(float f, float f2, int i) {
|
||||
d(i);
|
||||
float[] fArr = this.d;
|
||||
this.f[i] = f;
|
||||
fArr[i] = f;
|
||||
float[] fArr2 = this.e;
|
||||
this.g[i] = f2;
|
||||
fArr2[i] = f2;
|
||||
this.h[i] = d((int) f, (int) f2);
|
||||
this.k |= 1 << i;
|
||||
}
|
||||
|
||||
private int a(int i, int i2, int i3) {
|
||||
int abs = Math.abs(i);
|
||||
if (abs < i2) {
|
||||
return 0;
|
||||
}
|
||||
return abs > i3 ? i > 0 ? i3 : -i3 : i;
|
||||
}
|
||||
|
||||
private float a(float f, float f2, float f3) {
|
||||
float abs = Math.abs(f);
|
||||
if (abs < f2) {
|
||||
return 0.0f;
|
||||
}
|
||||
return abs > f3 ? f > 0.0f ? f3 : -f3 : f;
|
||||
}
|
||||
|
||||
private float a(float f) {
|
||||
return (float) Math.sin((f - 0.5f) * 0.47123894f);
|
||||
}
|
||||
|
||||
public boolean a(boolean z) {
|
||||
if (this.a == 2) {
|
||||
boolean computeScrollOffset = this.q.computeScrollOffset();
|
||||
int currX = this.q.getCurrX();
|
||||
int currY = this.q.getCurrY();
|
||||
int left = currX - this.s.getLeft();
|
||||
int top = currY - this.s.getTop();
|
||||
if (left != 0) {
|
||||
ViewCompat.c(this.s, left);
|
||||
}
|
||||
if (top != 0) {
|
||||
ViewCompat.d(this.s, top);
|
||||
}
|
||||
if (left != 0 || top != 0) {
|
||||
this.r.a(this.s, currX, currY, left, top);
|
||||
}
|
||||
if (computeScrollOffset && currX == this.q.getFinalX() && currY == this.q.getFinalY()) {
|
||||
this.q.abortAnimation();
|
||||
computeScrollOffset = false;
|
||||
}
|
||||
if (!computeScrollOffset) {
|
||||
if (z) {
|
||||
this.u.post(this.v);
|
||||
} else {
|
||||
b(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.a == 2;
|
||||
}
|
||||
|
||||
void b(int i) {
|
||||
this.u.removeCallbacks(this.v);
|
||||
if (this.a != i) {
|
||||
this.a = i;
|
||||
this.r.c(i);
|
||||
if (this.a == 0) {
|
||||
this.s = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int d(int i, int i2) {
|
||||
int i3 = i < this.u.getLeft() + this.o ? 1 : 0;
|
||||
if (i2 < this.u.getTop() + this.o) {
|
||||
i3 |= 4;
|
||||
}
|
||||
if (i > this.u.getRight() - this.o) {
|
||||
i3 |= 2;
|
||||
}
|
||||
return i2 > this.u.getBottom() - this.o ? i3 | 8 : i3;
|
||||
}
|
||||
|
||||
boolean b(View view, int i) {
|
||||
if (view == this.s && this.c == i) {
|
||||
return true;
|
||||
}
|
||||
if (view == null || !this.r.b(view, i)) {
|
||||
return false;
|
||||
}
|
||||
this.c = i;
|
||||
a(view, i);
|
||||
return true;
|
||||
}
|
||||
|
||||
/* JADX WARN: Code restructure failed: missing block: B:50:0x00dd, code lost:
|
||||
|
||||
if (r12 != r11) goto L54;
|
||||
*/
|
||||
/*
|
||||
Code decompiled incorrectly, please refer to instructions dump.
|
||||
To view partially-correct code enable 'Show inconsistent code' option in preferences
|
||||
*/
|
||||
public boolean b(android.view.MotionEvent r17) {
|
||||
/*
|
||||
Method dump skipped, instructions count: 315
|
||||
To view this dump change 'Code comments level' option to 'DEBUG'
|
||||
*/
|
||||
throw new UnsupportedOperationException("Method not decompiled: androidx.customview.widget.ViewDragHelper.b(android.view.MotionEvent):boolean");
|
||||
}
|
||||
|
||||
private void a(float f, float f2) {
|
||||
this.t = true;
|
||||
this.r.a(this.s, f, f2);
|
||||
this.t = false;
|
||||
if (this.a == 1) {
|
||||
b(0);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean a(int i) {
|
||||
return ((1 << i) & this.k) != 0;
|
||||
}
|
||||
|
||||
public void a(MotionEvent motionEvent) {
|
||||
int i;
|
||||
int actionMasked = motionEvent.getActionMasked();
|
||||
int actionIndex = motionEvent.getActionIndex();
|
||||
if (actionMasked == 0) {
|
||||
a();
|
||||
}
|
||||
if (this.l == null) {
|
||||
this.l = VelocityTracker.obtain();
|
||||
}
|
||||
this.l.addMovement(motionEvent);
|
||||
int i2 = 0;
|
||||
if (actionMasked == 0) {
|
||||
float x = motionEvent.getX();
|
||||
float y = motionEvent.getY();
|
||||
int pointerId = motionEvent.getPointerId(0);
|
||||
View a = a((int) x, (int) y);
|
||||
b(x, y, pointerId);
|
||||
b(a, pointerId);
|
||||
int i3 = this.h[pointerId];
|
||||
int i4 = this.p;
|
||||
if ((i3 & i4) != 0) {
|
||||
this.r.b(i3 & i4, pointerId);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (actionMasked == 1) {
|
||||
if (this.a == 1) {
|
||||
e();
|
||||
}
|
||||
a();
|
||||
return;
|
||||
}
|
||||
if (actionMasked == 2) {
|
||||
if (this.a == 1) {
|
||||
if (e(this.c)) {
|
||||
int findPointerIndex = motionEvent.findPointerIndex(this.c);
|
||||
float x2 = motionEvent.getX(findPointerIndex);
|
||||
float y2 = motionEvent.getY(findPointerIndex);
|
||||
float[] fArr = this.f;
|
||||
int i5 = this.c;
|
||||
int i6 = (int) (x2 - fArr[i5]);
|
||||
int i7 = (int) (y2 - this.g[i5]);
|
||||
a(this.s.getLeft() + i6, this.s.getTop() + i7, i6, i7);
|
||||
c(motionEvent);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
int pointerCount = motionEvent.getPointerCount();
|
||||
while (i2 < pointerCount) {
|
||||
int pointerId2 = motionEvent.getPointerId(i2);
|
||||
if (e(pointerId2)) {
|
||||
float x3 = motionEvent.getX(i2);
|
||||
float y3 = motionEvent.getY(i2);
|
||||
float f = x3 - this.d[pointerId2];
|
||||
float f2 = y3 - this.e[pointerId2];
|
||||
a(f, f2, pointerId2);
|
||||
if (this.a != 1) {
|
||||
View a2 = a((int) x3, (int) y3);
|
||||
if (a(a2, f, f2) && b(a2, pointerId2)) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
i2++;
|
||||
}
|
||||
c(motionEvent);
|
||||
return;
|
||||
}
|
||||
if (actionMasked == 3) {
|
||||
if (this.a == 1) {
|
||||
a(0.0f, 0.0f);
|
||||
}
|
||||
a();
|
||||
return;
|
||||
}
|
||||
if (actionMasked == 5) {
|
||||
int pointerId3 = motionEvent.getPointerId(actionIndex);
|
||||
float x4 = motionEvent.getX(actionIndex);
|
||||
float y4 = motionEvent.getY(actionIndex);
|
||||
b(x4, y4, pointerId3);
|
||||
if (this.a == 0) {
|
||||
b(a((int) x4, (int) y4), pointerId3);
|
||||
int i8 = this.h[pointerId3];
|
||||
int i9 = this.p;
|
||||
if ((i8 & i9) != 0) {
|
||||
this.r.b(i8 & i9, pointerId3);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (b((int) x4, (int) y4)) {
|
||||
b(this.s, pointerId3);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (actionMasked != 6) {
|
||||
return;
|
||||
}
|
||||
int pointerId4 = motionEvent.getPointerId(actionIndex);
|
||||
if (this.a == 1 && pointerId4 == this.c) {
|
||||
int pointerCount2 = motionEvent.getPointerCount();
|
||||
while (true) {
|
||||
if (i2 >= pointerCount2) {
|
||||
i = -1;
|
||||
break;
|
||||
}
|
||||
int pointerId5 = motionEvent.getPointerId(i2);
|
||||
if (pointerId5 != this.c) {
|
||||
View a3 = a((int) motionEvent.getX(i2), (int) motionEvent.getY(i2));
|
||||
View view = this.s;
|
||||
if (a3 == view && b(view, pointerId5)) {
|
||||
i = this.c;
|
||||
break;
|
||||
}
|
||||
}
|
||||
i2++;
|
||||
}
|
||||
if (i == -1) {
|
||||
e();
|
||||
}
|
||||
}
|
||||
c(pointerId4);
|
||||
}
|
||||
|
||||
public boolean b(int i, int i2) {
|
||||
return a(this.s, i, i2);
|
||||
}
|
||||
|
||||
private void a(float f, float f2, int i) {
|
||||
int i2 = a(f, f2, i, 1) ? 1 : 0;
|
||||
if (a(f2, f, i, 4)) {
|
||||
i2 |= 4;
|
||||
}
|
||||
if (a(f, f2, i, 2)) {
|
||||
i2 |= 2;
|
||||
}
|
||||
if (a(f2, f, i, 8)) {
|
||||
i2 |= 8;
|
||||
}
|
||||
if (i2 != 0) {
|
||||
int[] iArr = this.i;
|
||||
iArr[i] = iArr[i] | i2;
|
||||
this.r.a(i2, i);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean a(float f, float f2, int i, int i2) {
|
||||
float abs = Math.abs(f);
|
||||
float abs2 = Math.abs(f2);
|
||||
if ((this.h[i] & i2) != i2 || (this.p & i2) == 0 || (this.j[i] & i2) == i2 || (this.i[i] & i2) == i2) {
|
||||
return false;
|
||||
}
|
||||
int i3 = this.b;
|
||||
if (abs <= i3 && abs2 <= i3) {
|
||||
return false;
|
||||
}
|
||||
if (abs >= abs2 * 0.5f || !this.r.b(i2)) {
|
||||
return (this.i[i] & i2) == 0 && abs > ((float) this.b);
|
||||
}
|
||||
int[] iArr = this.j;
|
||||
iArr[i] = iArr[i] | i2;
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean a(View view, float f, float f2) {
|
||||
if (view == null) {
|
||||
return false;
|
||||
}
|
||||
boolean z = this.r.a(view) > 0;
|
||||
boolean z2 = this.r.b(view) > 0;
|
||||
if (!z || !z2) {
|
||||
return z ? Math.abs(f) > ((float) this.b) : z2 && Math.abs(f2) > ((float) this.b);
|
||||
}
|
||||
float f3 = (f * f) + (f2 * f2);
|
||||
int i = this.b;
|
||||
return f3 > ((float) (i * i));
|
||||
}
|
||||
|
||||
private void a(int i, int i2, int i3, int i4) {
|
||||
int left = this.s.getLeft();
|
||||
int top = this.s.getTop();
|
||||
if (i3 != 0) {
|
||||
i = this.r.a(this.s, i, i3);
|
||||
ViewCompat.c(this.s, i - left);
|
||||
}
|
||||
int i5 = i;
|
||||
if (i4 != 0) {
|
||||
i2 = this.r.b(this.s, i2, i4);
|
||||
ViewCompat.d(this.s, i2 - top);
|
||||
}
|
||||
int i6 = i2;
|
||||
if (i3 == 0 && i4 == 0) {
|
||||
return;
|
||||
}
|
||||
this.r.a(this.s, i5, i6, i5 - left, i6 - top);
|
||||
}
|
||||
|
||||
public boolean a(View view, int i, int i2) {
|
||||
return view != null && i >= view.getLeft() && i < view.getRight() && i2 >= view.getTop() && i2 < view.getBottom();
|
||||
}
|
||||
|
||||
public View a(int i, int i2) {
|
||||
for (int childCount = this.u.getChildCount() - 1; childCount >= 0; childCount--) {
|
||||
ViewGroup viewGroup = this.u;
|
||||
this.r.a(childCount);
|
||||
View childAt = viewGroup.getChildAt(childCount);
|
||||
if (i >= childAt.getLeft() && i < childAt.getRight() && i2 >= childAt.getTop() && i2 < childAt.getBottom()) {
|
||||
return childAt;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user