UIUtil.java 源代码
package com.x8zs.plugin.utils;
import android.content.Context;
import android.graphics.Point;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import java.lang.reflect.Field;
public class UIUtil {
public static View.OnClickListener getOnClickListener(View view) {
return getOnClickListenerV14(view);
}
private static View.OnClickListener getOnClickListenerV(View view) {
try {
return (View.OnClickListener) Class.forName("android.view.View").getDeclaredField("mOnClickListener").get(view);
} catch (ClassNotFoundException unused) {
Log.e("Reflection", "Class Not Found.");
return null;
} catch (IllegalAccessException unused2) {
Log.e("Reflection", "Illegal Access.");
return null;
} catch (NoSuchFieldException unused3) {
Log.e("Reflection", "No Such Field.");
return null;
}
}
private static View.OnClickListener getOnClickListenerV14(View view) {
Object obj;
try {
Field declaredField = Class.forName("android.view.View").getDeclaredField("mListenerInfo");
if (declaredField != null) {
declaredField.setAccessible(true);
obj = declaredField.get(view);
} else {
obj = null;
}
Field declaredField2 = Class.forName("android.view.View$ListenerInfo").getDeclaredField("mOnClickListener");
if (declaredField2 == null || obj == null) {
return null;
}
return (View.OnClickListener) declaredField2.get(obj);
} catch (ClassNotFoundException unused) {
Log.e("Reflection", "Class Not Found.");
return null;
} catch (IllegalAccessException unused2) {
Log.e("Reflection", "Illegal Access.");
return null;
} catch (NoSuchFieldException unused3) {
Log.e("Reflection", "No Such Field.");
return null;
}
}
public static int getScreenHeight(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService("window");
Point point = new Point();
windowManager.getDefaultDisplay().getSize(point);
return point.y;
}
public static int getScreenWidth(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService("window");
Point point = new Point();
windowManager.getDefaultDisplay().getSize(point);
return point.x;
}
}