ADD week 5
This commit is contained in:
		| @@ -0,0 +1,56 @@ | ||||
| package androidx.coordinatorlayout.widget; | ||||
|  | ||||
| import android.graphics.Matrix; | ||||
| import android.graphics.Rect; | ||||
| import android.graphics.RectF; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.view.ViewParent; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ViewGroupUtils { | ||||
|     private static final ThreadLocal<Matrix> sMatrix = new ThreadLocal<>(); | ||||
|     private static final ThreadLocal<RectF> sRectF = new ThreadLocal<>(); | ||||
|  | ||||
|     static void offsetDescendantRect(ViewGroup viewGroup, View view, Rect rect) { | ||||
|         ThreadLocal<Matrix> threadLocal = sMatrix; | ||||
|         Matrix matrix = threadLocal.get(); | ||||
|         if (matrix == null) { | ||||
|             matrix = new Matrix(); | ||||
|             threadLocal.set(matrix); | ||||
|         } else { | ||||
|             matrix.reset(); | ||||
|         } | ||||
|         offsetDescendantMatrix(viewGroup, view, matrix); | ||||
|         ThreadLocal<RectF> threadLocal2 = sRectF; | ||||
|         RectF rectF = threadLocal2.get(); | ||||
|         if (rectF == null) { | ||||
|             rectF = new RectF(); | ||||
|             threadLocal2.set(rectF); | ||||
|         } | ||||
|         rectF.set(rect); | ||||
|         matrix.mapRect(rectF); | ||||
|         rect.set((int) (rectF.left + 0.5f), (int) (rectF.top + 0.5f), (int) (rectF.right + 0.5f), (int) (rectF.bottom + 0.5f)); | ||||
|     } | ||||
|  | ||||
|     public static void getDescendantRect(ViewGroup viewGroup, View view, Rect rect) { | ||||
|         rect.set(0, 0, view.getWidth(), view.getHeight()); | ||||
|         offsetDescendantRect(viewGroup, view, rect); | ||||
|     } | ||||
|  | ||||
|     private static void offsetDescendantMatrix(ViewParent viewParent, View view, Matrix matrix) { | ||||
|         Object parent = view.getParent(); | ||||
|         if ((parent instanceof View) && parent != viewParent) { | ||||
|             offsetDescendantMatrix(viewParent, (View) parent, matrix); | ||||
|             matrix.preTranslate(-r0.getScrollX(), -r0.getScrollY()); | ||||
|         } | ||||
|         matrix.preTranslate(view.getLeft(), view.getTop()); | ||||
|         if (view.getMatrix().isIdentity()) { | ||||
|             return; | ||||
|         } | ||||
|         matrix.preConcat(view.getMatrix()); | ||||
|     } | ||||
|  | ||||
|     private ViewGroupUtils() { | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user