111 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.viewpager2.widget;
 | |
| 
 | |
| import android.animation.LayoutTransition;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import androidx.recyclerview.widget.LinearLayoutManager;
 | |
| import java.lang.reflect.Array;
 | |
| import java.util.Arrays;
 | |
| import java.util.Comparator;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| final class AnimateLayoutChangeDetector {
 | |
|     private static final ViewGroup.MarginLayoutParams ZERO_MARGIN_LAYOUT_PARAMS;
 | |
|     private LinearLayoutManager mLayoutManager;
 | |
| 
 | |
|     static {
 | |
|         ViewGroup.MarginLayoutParams marginLayoutParams = new ViewGroup.MarginLayoutParams(-1, -1);
 | |
|         ZERO_MARGIN_LAYOUT_PARAMS = marginLayoutParams;
 | |
|         marginLayoutParams.setMargins(0, 0, 0, 0);
 | |
|     }
 | |
| 
 | |
|     AnimateLayoutChangeDetector(LinearLayoutManager linearLayoutManager) {
 | |
|         this.mLayoutManager = linearLayoutManager;
 | |
|     }
 | |
| 
 | |
|     boolean mayHaveInterferingAnimations() {
 | |
|         return (!arePagesLaidOutContiguously() || this.mLayoutManager.getChildCount() <= 1) && hasRunningChangingLayoutTransition();
 | |
|     }
 | |
| 
 | |
|     private boolean arePagesLaidOutContiguously() {
 | |
|         int top;
 | |
|         int i;
 | |
|         int bottom;
 | |
|         int i2;
 | |
|         int childCount = this.mLayoutManager.getChildCount();
 | |
|         if (childCount == 0) {
 | |
|             return true;
 | |
|         }
 | |
|         boolean z = this.mLayoutManager.getOrientation() == 0;
 | |
|         int[][] iArr = (int[][]) Array.newInstance((Class<?>) Integer.TYPE, childCount, 2);
 | |
|         for (int i3 = 0; i3 < childCount; i3++) {
 | |
|             View childAt = this.mLayoutManager.getChildAt(i3);
 | |
|             if (childAt == null) {
 | |
|                 throw new IllegalStateException("null view contained in the view hierarchy");
 | |
|             }
 | |
|             ViewGroup.LayoutParams layoutParams = childAt.getLayoutParams();
 | |
|             ViewGroup.MarginLayoutParams marginLayoutParams = layoutParams instanceof ViewGroup.MarginLayoutParams ? (ViewGroup.MarginLayoutParams) layoutParams : ZERO_MARGIN_LAYOUT_PARAMS;
 | |
|             int[] iArr2 = iArr[i3];
 | |
|             if (z) {
 | |
|                 top = childAt.getLeft();
 | |
|                 i = marginLayoutParams.leftMargin;
 | |
|             } else {
 | |
|                 top = childAt.getTop();
 | |
|                 i = marginLayoutParams.topMargin;
 | |
|             }
 | |
|             iArr2[0] = top - i;
 | |
|             int[] iArr3 = iArr[i3];
 | |
|             if (z) {
 | |
|                 bottom = childAt.getRight();
 | |
|                 i2 = marginLayoutParams.rightMargin;
 | |
|             } else {
 | |
|                 bottom = childAt.getBottom();
 | |
|                 i2 = marginLayoutParams.bottomMargin;
 | |
|             }
 | |
|             iArr3[1] = bottom + i2;
 | |
|         }
 | |
|         Arrays.sort(iArr, new Comparator<int[]>() { // from class: androidx.viewpager2.widget.AnimateLayoutChangeDetector.1
 | |
|             @Override // java.util.Comparator
 | |
|             public int compare(int[] iArr4, int[] iArr5) {
 | |
|                 return iArr4[0] - iArr5[0];
 | |
|             }
 | |
|         });
 | |
|         for (int i4 = 1; i4 < childCount; i4++) {
 | |
|             if (iArr[i4 - 1][1] != iArr[i4][0]) {
 | |
|                 return false;
 | |
|             }
 | |
|         }
 | |
|         int[] iArr4 = iArr[0];
 | |
|         int i5 = iArr4[1];
 | |
|         int i6 = iArr4[0];
 | |
|         return i6 <= 0 && iArr[childCount - 1][1] >= i5 - i6;
 | |
|     }
 | |
| 
 | |
|     private boolean hasRunningChangingLayoutTransition() {
 | |
|         int childCount = this.mLayoutManager.getChildCount();
 | |
|         for (int i = 0; i < childCount; i++) {
 | |
|             if (hasRunningChangingLayoutTransition(this.mLayoutManager.getChildAt(i))) {
 | |
|                 return true;
 | |
|             }
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     private static boolean hasRunningChangingLayoutTransition(View view) {
 | |
|         if (view instanceof ViewGroup) {
 | |
|             ViewGroup viewGroup = (ViewGroup) view;
 | |
|             LayoutTransition layoutTransition = viewGroup.getLayoutTransition();
 | |
|             if (layoutTransition != null && layoutTransition.isChangingLayout()) {
 | |
|                 return true;
 | |
|             }
 | |
|             int childCount = viewGroup.getChildCount();
 | |
|             for (int i = 0; i < childCount; i++) {
 | |
|                 if (hasRunningChangingLayoutTransition(viewGroup.getChildAt(i))) {
 | |
|                     return true;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| }
 |