package view_inspector.util; import android.content.res.Resources; import android.support.v7.internal.widget.ActionBarOverlayLayout; import android.view.View; import android.view.ViewParent; import view_inspector.ViewInspector; public final class ViewUtil { public static String getViewId(View view) { try { return view.getId() > 0 ? view.getResources().getResourceName(view.getId()) : ""; } catch (Resources.NotFoundException e) { return ""; } } public static String getSimpleViewId(View view) { String viewId = getViewId(view); if (viewId.length() > 0 && !viewId.startsWith("android")) viewId = viewId.split(":")[1]; return viewId; } public static String getClassName(View view) { if (view.getClass().getSimpleName().contains("$")) { // build-time proxy case String className = view.getClass().getSimpleName().split("\\$")[1]; String[] strArray = className.split("_"); className = strArray[strArray.length - 1]; return className; } else { // runtime-time proxy case return view.getClass().getSimpleName().split("_")[0]; } } public static int getViewLevel(View view) { int level = 0; ViewParent parent = view.getParent(); while (parent != null && !parent.toString().contains("android.view.ViewRootImpl")) { parent = parent.getParent(); level++; } return level; } public static boolean isNotSupportedViewClass(View view) { return view instanceof ActionBarOverlayLayout || isAndroidInternalViewClass(view); } public static boolean isLevelTwoView(View view) { return getViewLevel(view) == 2; } public static boolean isViewRoot(View view) { return view.equals(ViewInspector.viewRoot); } public static boolean isActionBarOverlayLayout(View view) { return view.getClass().getName().equals("com.android.internal.widget.ActionBarOverlayLayout"); } private static boolean isAndroidInternalViewClass(View view) { String viewClassName = view.getClass().getName(); return viewClassName.startsWith("android.support.v7.internal") || viewClassName.startsWith( "com.android.internal"); } private ViewUtil() { throw new AssertionError("No instances."); } }