ADD week 5
This commit is contained in:
		| @@ -0,0 +1,138 @@ | ||||
| package androidx.recyclerview.widget; | ||||
|  | ||||
| import android.view.View; | ||||
| import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| class ViewBoundsCheck { | ||||
|     static final int CVE_PVE_POS = 12; | ||||
|     static final int CVE_PVS_POS = 8; | ||||
|     static final int CVS_PVE_POS = 4; | ||||
|     static final int CVS_PVS_POS = 0; | ||||
|     static final int EQ = 2; | ||||
|     static final int FLAG_CVE_EQ_PVE = 8192; | ||||
|     static final int FLAG_CVE_EQ_PVS = 512; | ||||
|     static final int FLAG_CVE_GT_PVE = 4096; | ||||
|     static final int FLAG_CVE_GT_PVS = 256; | ||||
|     static final int FLAG_CVE_LT_PVE = 16384; | ||||
|     static final int FLAG_CVE_LT_PVS = 1024; | ||||
|     static final int FLAG_CVS_EQ_PVE = 32; | ||||
|     static final int FLAG_CVS_EQ_PVS = 2; | ||||
|     static final int FLAG_CVS_GT_PVE = 16; | ||||
|     static final int FLAG_CVS_GT_PVS = 1; | ||||
|     static final int FLAG_CVS_LT_PVE = 64; | ||||
|     static final int FLAG_CVS_LT_PVS = 4; | ||||
|     static final int GT = 1; | ||||
|     static final int LT = 4; | ||||
|     static final int MASK = 7; | ||||
|     BoundFlags mBoundFlags = new BoundFlags(); | ||||
|     final Callback mCallback; | ||||
|  | ||||
|     interface Callback { | ||||
|         View getChildAt(int i); | ||||
|  | ||||
|         int getChildEnd(View view); | ||||
|  | ||||
|         int getChildStart(View view); | ||||
|  | ||||
|         int getParentEnd(); | ||||
|  | ||||
|         int getParentStart(); | ||||
|     } | ||||
|  | ||||
|     @Retention(RetentionPolicy.SOURCE) | ||||
|     public @interface ViewBounds { | ||||
|     } | ||||
|  | ||||
|     ViewBoundsCheck(Callback callback) { | ||||
|         this.mCallback = callback; | ||||
|     } | ||||
|  | ||||
|     static class BoundFlags { | ||||
|         int mBoundFlags = 0; | ||||
|         int mChildEnd; | ||||
|         int mChildStart; | ||||
|         int mRvEnd; | ||||
|         int mRvStart; | ||||
|  | ||||
|         void addFlags(int i) { | ||||
|             this.mBoundFlags = i | this.mBoundFlags; | ||||
|         } | ||||
|  | ||||
|         int compare(int i, int i2) { | ||||
|             if (i > i2) { | ||||
|                 return 1; | ||||
|             } | ||||
|             return i == i2 ? 2 : 4; | ||||
|         } | ||||
|  | ||||
|         void resetFlags() { | ||||
|             this.mBoundFlags = 0; | ||||
|         } | ||||
|  | ||||
|         void setBounds(int i, int i2, int i3, int i4) { | ||||
|             this.mRvStart = i; | ||||
|             this.mRvEnd = i2; | ||||
|             this.mChildStart = i3; | ||||
|             this.mChildEnd = i4; | ||||
|         } | ||||
|  | ||||
|         BoundFlags() { | ||||
|         } | ||||
|  | ||||
|         boolean boundsMatch() { | ||||
|             int i = this.mBoundFlags; | ||||
|             if ((i & 7) != 0 && (i & compare(this.mChildStart, this.mRvStart)) == 0) { | ||||
|                 return false; | ||||
|             } | ||||
|             int i2 = this.mBoundFlags; | ||||
|             if ((i2 & 112) != 0 && (i2 & (compare(this.mChildStart, this.mRvEnd) << 4)) == 0) { | ||||
|                 return false; | ||||
|             } | ||||
|             int i3 = this.mBoundFlags; | ||||
|             if ((i3 & 1792) != 0 && (i3 & (compare(this.mChildEnd, this.mRvStart) << 8)) == 0) { | ||||
|                 return false; | ||||
|             } | ||||
|             int i4 = this.mBoundFlags; | ||||
|             return (i4 & 28672) == 0 || (i4 & (compare(this.mChildEnd, this.mRvEnd) << 12)) != 0; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     View findOneViewWithinBoundFlags(int i, int i2, int i3, int i4) { | ||||
|         int parentStart = this.mCallback.getParentStart(); | ||||
|         int parentEnd = this.mCallback.getParentEnd(); | ||||
|         int i5 = i2 > i ? 1 : -1; | ||||
|         View view = null; | ||||
|         while (i != i2) { | ||||
|             View childAt = this.mCallback.getChildAt(i); | ||||
|             this.mBoundFlags.setBounds(parentStart, parentEnd, this.mCallback.getChildStart(childAt), this.mCallback.getChildEnd(childAt)); | ||||
|             if (i3 != 0) { | ||||
|                 this.mBoundFlags.resetFlags(); | ||||
|                 this.mBoundFlags.addFlags(i3); | ||||
|                 if (this.mBoundFlags.boundsMatch()) { | ||||
|                     return childAt; | ||||
|                 } | ||||
|             } | ||||
|             if (i4 != 0) { | ||||
|                 this.mBoundFlags.resetFlags(); | ||||
|                 this.mBoundFlags.addFlags(i4); | ||||
|                 if (this.mBoundFlags.boundsMatch()) { | ||||
|                     view = childAt; | ||||
|                 } | ||||
|             } | ||||
|             i += i5; | ||||
|         } | ||||
|         return view; | ||||
|     } | ||||
|  | ||||
|     boolean isViewWithinBoundFlags(View view, int i) { | ||||
|         this.mBoundFlags.setBounds(this.mCallback.getParentStart(), this.mCallback.getParentEnd(), this.mCallback.getChildStart(view), this.mCallback.getChildEnd(view)); | ||||
|         if (i == 0) { | ||||
|             return false; | ||||
|         } | ||||
|         this.mBoundFlags.resetFlags(); | ||||
|         this.mBoundFlags.addFlags(i); | ||||
|         return this.mBoundFlags.boundsMatch(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user