ADD week 5
This commit is contained in:
		
							
								
								
									
										102
									
								
								02-Easy5/E5/sources/androidx/transition/GhostViewPlatform.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								02-Easy5/E5/sources/androidx/transition/GhostViewPlatform.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| 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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user