package view_inspector.probe.util; import android.util.Log; import android.view.View; import view_inspector.ViewInspector; import view_inspector.util.ViewUtil; public final class LogUtil { private static final int TAB_SPACE = 70; private static final int LEVEL_SPACE = 4; private static final int EVENT_SPACE = 15; private static final int MEASURE_WH_SPACE = 6; private static final int WIDTH_SPEC_SPACE = 15; private static final int HEIGHT_SPEC_SPACE = 11; private static final int LAYOUT_CHANGED_SPACE = 10; private static final int LAYOUT_LTRB_SPACE = 7; public static void logOnMeasure(View view, int widthMeasureSpec, int heightMeasureSpec) { int level = ViewUtil.getViewLevel(view); String eventName = "onMeasure"; StringBuilder stringBuilder = new StringBuilder(eventName); int eventPostfix = EVENT_SPACE - eventName.length(); for (int i = 0; i < eventPostfix; i++) stringBuilder.append(" "); String className = ViewUtil.getClassName(view); String viewId = ViewUtil.getSimpleViewId(view); for (int i = 0; i < level; i++) stringBuilder.append("\t\t"); stringBuilder.append("> ").append(className).append(" [").append(viewId).append("] "); for (int i = className.length() + viewId.length(); i < TAB_SPACE - level * LEVEL_SPACE; i++) stringBuilder.append(" "); int width = View.MeasureSpec.getSize(widthMeasureSpec); int widthPostfix = MEASURE_WH_SPACE - String.valueOf(width).length(); int height = View.MeasureSpec.getSize(heightMeasureSpec); int heightPostfix = MEASURE_WH_SPACE - String.valueOf(height).length(); String widthSpec = View.MeasureSpec.toString(widthMeasureSpec).split(":")[1].split(" ")[1].toLowerCase(); int widthSpecPostfix = WIDTH_SPEC_SPACE - widthSpec.length(); String heightSpec = View.MeasureSpec.toString(heightMeasureSpec).split(":")[1].split(" ")[1].toLowerCase(); int heightSpecPostfix = HEIGHT_SPEC_SPACE - heightSpec.length(); stringBuilder.append(" [w: ").append(width); for (int i = 0; i < widthPostfix; i++) stringBuilder.append(" "); stringBuilder.append(widthSpec); for (int i = 0; i < widthSpecPostfix; i++) stringBuilder.append(" "); stringBuilder.append(" ,h: ").append(height); for (int i = 0; i < heightPostfix; i++) stringBuilder.append(" "); stringBuilder.append(heightSpec); for (int i = 0; i < heightSpecPostfix; i++) stringBuilder.append(" "); stringBuilder.append("]"); Log.d(ViewInspector.TAG, stringBuilder.toString()); } public static void logOnLayout(View view, boolean changed, int l, int t, int r, int b) { int level = ViewUtil.getViewLevel(view); String eventName = "onLayout"; StringBuilder stringBuilder = new StringBuilder(eventName); int eventPostfix = EVENT_SPACE - eventName.length(); for (int i = 0; i < eventPostfix; i++) stringBuilder.append(" "); String className = ViewUtil.getClassName(view); String viewId = ViewUtil.getSimpleViewId(view); for (int i = 0; i < level; i++) stringBuilder.append("\t\t"); stringBuilder.append("> ").append(className).append(" [").append(viewId).append("] "); for (int i = className.length() + viewId.length(); i < TAB_SPACE - level * LEVEL_SPACE - LAYOUT_CHANGED_SPACE; i++) stringBuilder.append(" "); String changedFlag = changed ? " (changed)" : " "; int changedPostfix = LAYOUT_CHANGED_SPACE - changedFlag.length(); stringBuilder.append(changedFlag); for (int i = 0; i < changedPostfix; i++) stringBuilder.append(" "); stringBuilder.append(" ["); int leftPostfix = LAYOUT_LTRB_SPACE - String.valueOf(l).length(); stringBuilder.append("l: ").append(l); for (int i = 0; i < leftPostfix; i++) stringBuilder.append(" "); stringBuilder.append(" ,"); int topPostfix = LAYOUT_LTRB_SPACE - String.valueOf(t).length(); stringBuilder.append("t: ").append(t); for (int i = 0; i < topPostfix; i++) stringBuilder.append(" "); stringBuilder.append(" ,"); int rightPostfix = LAYOUT_LTRB_SPACE - String.valueOf(r).length(); stringBuilder.append("r: ").append(r); for (int i = 0; i < rightPostfix; i++) stringBuilder.append(" "); stringBuilder.append(" ,"); int bottomPostfix = LAYOUT_LTRB_SPACE - String.valueOf(b).length(); stringBuilder.append("b: ").append(b); for (int i = 0; i < bottomPostfix; i++) stringBuilder.append(" "); stringBuilder.append("]"); Log.d(ViewInspector.TAG, stringBuilder.toString()); } public static void logOnDraw(View view) { int level = ViewUtil.getViewLevel(view); String eventName = "onDraw"; StringBuilder stringBuilder = new StringBuilder(eventName); int eventPostfix = EVENT_SPACE - eventName.length(); for (int i = 0; i < eventPostfix; i++) stringBuilder.append(" "); String className = ViewUtil.getClassName(view); String viewId = ViewUtil.getSimpleViewId(view); for (int i = 0; i < level; i++) stringBuilder.append("\t\t"); stringBuilder.append("> ").append(className).append(" [").append(viewId).append("] "); for (int i = className.length() + viewId.length(); i < TAB_SPACE - level * LEVEL_SPACE; i++) stringBuilder.append(" "); Log.d(ViewInspector.TAG, stringBuilder.toString()); } public static void logRequestLayout(View view) { String eventName = "requestLayout"; StringBuilder stringBuilder = new StringBuilder(eventName); int eventPostfix = EVENT_SPACE - eventName.length(); for (int i = 0; i < eventPostfix; i++) stringBuilder.append(" "); String className = ViewUtil.getClassName(view); String viewId = ViewUtil.getSimpleViewId(view); stringBuilder.append("\t\t> ").append(className).append(" [").append(viewId).append("] "); Log.d(ViewInspector.TAG, stringBuilder.toString()); } public static void logForceLayout(View view) { int level = ViewUtil.getViewLevel(view); String eventName = "forceLayout"; StringBuilder stringBuilder = new StringBuilder(eventName); int eventPostfix = EVENT_SPACE - eventName.length(); for (int i = 0; i < eventPostfix; i++) stringBuilder.append(" "); String className = ViewUtil.getClassName(view); String viewId = ViewUtil.getSimpleViewId(view); for (int i = 0; i < level; i++) stringBuilder.append("\t\t"); stringBuilder.append("> ").append(className).append(" [").append(viewId).append("] "); Log.d(ViewInspector.TAG, stringBuilder.toString()); } private LogUtil() { throw new AssertionError("No instances."); } }