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