103 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.transition;
 | |
| 
 | |
| import android.graphics.Matrix;
 | |
| import android.util.Log;
 | |
| import android.view.View;
 | |
| import android.view.ViewGroup;
 | |
| import java.lang.reflect.InvocationTargetException;
 | |
| import java.lang.reflect.Method;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class GhostViewPlatform implements GhostView {
 | |
|     private static final String TAG = "GhostViewApi21";
 | |
|     private static Method sAddGhostMethod;
 | |
|     private static boolean sAddGhostMethodFetched;
 | |
|     private static Class<?> sGhostViewClass;
 | |
|     private static boolean sGhostViewClassFetched;
 | |
|     private static Method sRemoveGhostMethod;
 | |
|     private static boolean sRemoveGhostMethodFetched;
 | |
|     private final View mGhostView;
 | |
| 
 | |
|     @Override // androidx.transition.GhostView
 | |
|     public void reserveEndViewTransition(ViewGroup viewGroup, View view) {
 | |
|     }
 | |
| 
 | |
|     static GhostView addGhost(View view, ViewGroup viewGroup, Matrix matrix) {
 | |
|         fetchAddGhostMethod();
 | |
|         Method method = sAddGhostMethod;
 | |
|         if (method != null) {
 | |
|             try {
 | |
|                 return new GhostViewPlatform((View) method.invoke(null, view, viewGroup, matrix));
 | |
|             } catch (IllegalAccessException unused) {
 | |
|             } catch (InvocationTargetException e) {
 | |
|                 throw new RuntimeException(e.getCause());
 | |
|             }
 | |
|         }
 | |
|         return null;
 | |
|     }
 | |
| 
 | |
|     static void removeGhost(View view) {
 | |
|         fetchRemoveGhostMethod();
 | |
|         Method method = sRemoveGhostMethod;
 | |
|         if (method != null) {
 | |
|             try {
 | |
|                 method.invoke(null, view);
 | |
|             } catch (IllegalAccessException unused) {
 | |
|             } catch (InvocationTargetException e) {
 | |
|                 throw new RuntimeException(e.getCause());
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private GhostViewPlatform(View view) {
 | |
|         this.mGhostView = view;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.transition.GhostView
 | |
|     public void setVisibility(int i) {
 | |
|         this.mGhostView.setVisibility(i);
 | |
|     }
 | |
| 
 | |
|     private static void fetchGhostViewClass() {
 | |
|         if (sGhostViewClassFetched) {
 | |
|             return;
 | |
|         }
 | |
|         try {
 | |
|             sGhostViewClass = Class.forName("android.view.GhostView");
 | |
|         } catch (ClassNotFoundException e) {
 | |
|             Log.i(TAG, "Failed to retrieve GhostView class", e);
 | |
|         }
 | |
|         sGhostViewClassFetched = true;
 | |
|     }
 | |
| 
 | |
|     private static void fetchAddGhostMethod() {
 | |
|         if (sAddGhostMethodFetched) {
 | |
|             return;
 | |
|         }
 | |
|         try {
 | |
|             fetchGhostViewClass();
 | |
|             Method declaredMethod = sGhostViewClass.getDeclaredMethod("addGhost", View.class, ViewGroup.class, Matrix.class);
 | |
|             sAddGhostMethod = declaredMethod;
 | |
|             declaredMethod.setAccessible(true);
 | |
|         } catch (NoSuchMethodException e) {
 | |
|             Log.i(TAG, "Failed to retrieve addGhost method", e);
 | |
|         }
 | |
|         sAddGhostMethodFetched = true;
 | |
|     }
 | |
| 
 | |
|     private static void fetchRemoveGhostMethod() {
 | |
|         if (sRemoveGhostMethodFetched) {
 | |
|             return;
 | |
|         }
 | |
|         try {
 | |
|             fetchGhostViewClass();
 | |
|             Method declaredMethod = sGhostViewClass.getDeclaredMethod("removeGhost", View.class);
 | |
|             sRemoveGhostMethod = declaredMethod;
 | |
|             declaredMethod.setAccessible(true);
 | |
|         } catch (NoSuchMethodException e) {
 | |
|             Log.i(TAG, "Failed to retrieve removeGhost method", e);
 | |
|         }
 | |
|         sRemoveGhostMethodFetched = true;
 | |
|     }
 | |
| }
 |