CrackMe.apk
Download file
package androidx.transition;
import android.graphics.Matrix;
import android.util.Log;
import android.view.View;
import android.view.ViewParent;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
class ViewUtilsBase {
private static final String TAG = "ViewUtilsBase";
private static final int VISIBILITY_MASK = 12;
private static boolean sSetFrameFetched;
private static Method sSetFrameMethod;
private static Field sViewFlagsField;
private static boolean sViewFlagsFieldFetched;
private float[] mMatrixValues;
ViewUtilsBase() {
}
public void setTransitionAlpha(View view, float f) {
Float f2 = (Float) view.getTag(R.id.save_non_transition_alpha);
if (f2 != null) {
view.setAlpha(f2.floatValue() * f);
} else {
view.setAlpha(f);
}
}
public float getTransitionAlpha(View view) {
Float f = (Float) view.getTag(R.id.save_non_transition_alpha);
if (f != null) {
return view.getAlpha() / f.floatValue();
}
return view.getAlpha();
}
public void saveNonTransitionAlpha(View view) {
if (view.getTag(R.id.save_non_transition_alpha) == null) {
view.setTag(R.id.save_non_transition_alpha, Float.valueOf(view.getAlpha()));
}
}
public void clearNonTransitionAlpha(View view) {
if (view.getVisibility() == 0) {
view.setTag(R.id.save_non_transition_alpha, (Object) null);
}
}
public void transformMatrixToGlobal(View view, Matrix matrix) {
ViewParent parent = view.getParent();
if (parent instanceof View) {
View view2 = (View) parent;
transformMatrixToGlobal(view2, matrix);
matrix.preTranslate((float) (-view2.getScrollX()), (float) (-view2.getScrollY()));
}
matrix.preTranslate((float) view.getLeft(), (float) view.getTop());
Matrix matrix2 = view.getMatrix();
if (!matrix2.isIdentity()) {
matrix.preConcat(matrix2);
}
}
public void transformMatrixToLocal(View view, Matrix matrix) {
ViewParent parent = view.getParent();
if (parent instanceof View) {
View view2 = (View) parent;
transformMatrixToLocal(view2, matrix);
matrix.postTranslate((float) view2.getScrollX(), (float) view2.getScrollY());
}
matrix.postTranslate((float) (-view.getLeft()), (float) (-view.getTop()));
Matrix matrix2 = view.getMatrix();
if (!matrix2.isIdentity()) {
Matrix matrix3 = new Matrix();
if (matrix2.invert(matrix3)) {
matrix.postConcat(matrix3);
}
}
}
public void setAnimationMatrix(View view, Matrix matrix) {
if (matrix == null || matrix.isIdentity()) {
view.setPivotX((float) (view.getWidth() / 2));
view.setPivotY((float) (view.getHeight() / 2));
view.setTranslationX(0.0f);
view.setTranslationY(0.0f);
view.setScaleX(1.0f);
view.setScaleY(1.0f);
view.setRotation(0.0f);
return;
}
float[] fArr = this.mMatrixValues;
if (fArr == null) {
fArr = new float[9];
this.mMatrixValues = fArr;
}
matrix.getValues(fArr);
float f = fArr[3];
float sqrt = ((float) Math.sqrt((double) (1.0f - (f * f)))) * ((float) (fArr[0] < 0.0f ? -1 : 1));
float degrees = (float) Math.toDegrees(Math.atan2((double) f, (double) sqrt));
float f2 = fArr[0] / sqrt;
float f3 = fArr[4] / sqrt;
float f4 = fArr[2];
float f5 = fArr[5];
view.setPivotX(0.0f);
view.setPivotY(0.0f);
view.setTranslationX(f4);
view.setTranslationY(f5);
view.setRotation(degrees);
view.setScaleX(f2);
view.setScaleY(f3);
}
public void setLeftTopRightBottom(View view, int i, int i2, int i3, int i4) {
fetchSetFrame();
Method method = sSetFrameMethod;
if (method != null) {
try {
method.invoke(view, new Object[]{Integer.valueOf(i), Integer.valueOf(i2), Integer.valueOf(i3), Integer.valueOf(i4)});
} catch (IllegalAccessException unused) {
} catch (InvocationTargetException e) {
throw new RuntimeException(e.getCause());
}
}
}
public void setTransitionVisibility(View view, int i) {
if (!sViewFlagsFieldFetched) {
try {
Field declaredField = View.class.getDeclaredField("mViewFlags");
sViewFlagsField = declaredField;
declaredField.setAccessible(true);
} catch (NoSuchFieldException unused) {
Log.i(TAG, "fetchViewFlagsField: ");
}
sViewFlagsFieldFetched = true;
}
Field field = sViewFlagsField;
if (field != null) {
try {
sViewFlagsField.setInt(view, i | (field.getInt(view) & -13));
} catch (IllegalAccessException unused2) {
}
}
}
private void fetchSetFrame() {
if (!sSetFrameFetched) {
Class<View> cls = View.class;
try {
Method declaredMethod = cls.getDeclaredMethod("setFrame", new Class[]{Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE});
sSetFrameMethod = declaredMethod;
declaredMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
Log.i(TAG, "Failed to retrieve setFrame method", e);
}
sSetFrameFetched = true;
}
}
}
Download file