// Path: old-library-with-sample/src/main/java/com/rocko/common/DebugLog.java
// public class DebugLog {
//     /**
//      * Log输出所在类
//      */
//     private static String className;
//     /**
//      * Log输出所在方法
//      */
//     private static String methodName;
//     /**
//      * Log输出所行号
//      */
//     private static int lineNumber;
// 
//     private DebugLog() {
//     }
// 
//     /**
//      * 是否可Debug状态
//      *
//      * @return
//      */
//     public static boolean isDebuggable() {
//         return BuildConfig.DEBUG;
//     }
// 
//     /**
//      * 创建Log输出的基本信息
//      *
//      * @param log
//      * @return
//      */
//     private static String createLog(String log) {
//         StringBuffer buffer = new StringBuffer();
//         buffer.append("[");
//         buffer.append(methodName);
//         buffer.append("()");
//         buffer.append(" line:");
//         buffer.append(lineNumber);
//         buffer.append("] ");
//         buffer.append(log);
//         return buffer.toString();
//     }
// 
//     /**
//      * 取得输出所在位置的信息 className methodName lineNumber
//      *
//      * @param sElements
//      */
//     private static void getMethodNames(StackTraceElement[] sElements) {
//         className = sElements[1].getFileName().split("\\.")[0];
//         methodName = sElements[1].getMethodName();
//         lineNumber = sElements[1].getLineNumber();
//     }
// 
//     public static void e(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.e(className, createLog(message));
//     }
// 
//     public static void i(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.i(className, createLog(message));
//     }
// 
//     public static void d(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.d(className, createLog(message));
//     }
// 
//     public static void v(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.v(className, createLog(message));
//     }
// 
//     public static void w(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.w(className, createLog(message));
//     }
// 
//     public static void wtf(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.wtf(className, createLog(message));
//     }
// 
// }


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CompoundButton;
import android.widget.RadioGroup;
import com.rocko.common.DebugLog;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
package com.rocko.annotation;




/**
 * 为带InitView注解的View控件初始化并设置监听器的加载器<br>
 * 主要方法： {@link #processAnnotation(Object obj)}
 *
 * @author Mr.Zheng
 * @date 2014年8月11日21:59:01
 */
public class ViewInstaller {

    public static void processAnnotation(Activity obj) {
        process(obj);
    }

    // public static void processAnnotation(Fragment obj) {
    // processAnnotation(obj);
    // }

    /**
     * 初始化控件，处理View控件的Annotation注解
     *
     * @param obj Object实例对象 其或父类应有findViewById方法
     */
    private static void process(Object obj) {
        int viewId; // 当前Field注解的id值
        View view; // 控件
        InitView initView; // InitView注解
        ContentView layoutView;// LayoutView注解
        try {
            // 获取obj对象的类
            Class cl = obj.getClass();
            /* 设置setContentView */
            Method method = cl.getDeclaredMethod("onCreate", Bundle.class);
            layoutView = method.getAnnotation(ContentView.class);
            if (layoutView != null)
                ((Activity) obj).setContentView(layoutView.id());
            // 获取指定obj对象的所有Field，并遍历每个Field
            for (Field f : cl.getDeclaredFields()) {
                initView = f.getAnnotation(InitView.class);
                if (initView != null) {
// Path: old-library-with-sample/src/main/java/com/rocko/common/DebugLog.java
// public class DebugLog {
//     /**
//      * Log输出所在类
//      */
//     private static String className;
//     /**
//      * Log输出所在方法
//      */
//     private static String methodName;
//     /**
//      * Log输出所行号
//      */
//     private static int lineNumber;
// 
//     private DebugLog() {
//     }
// 
//     /**
//      * 是否可Debug状态
//      *
//      * @return
//      */
//     public static boolean isDebuggable() {
//         return BuildConfig.DEBUG;
//     }
// 
//     /**
//      * 创建Log输出的基本信息
//      *
//      * @param log
//      * @return
//      */
//     private static String createLog(String log) {
//         StringBuffer buffer = new StringBuffer();
//         buffer.append("[");
//         buffer.append(methodName);
//         buffer.append("()");
//         buffer.append(" line:");
//         buffer.append(lineNumber);
//         buffer.append("] ");
//         buffer.append(log);
//         return buffer.toString();
//     }
// 
//     /**
//      * 取得输出所在位置的信息 className methodName lineNumber
//      *
//      * @param sElements
//      */
//     private static void getMethodNames(StackTraceElement[] sElements) {
//         className = sElements[1].getFileName().split("\\.")[0];
//         methodName = sElements[1].getMethodName();
//         lineNumber = sElements[1].getLineNumber();
//     }
// 
//     public static void e(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.e(className, createLog(message));
//     }
// 
//     public static void i(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.i(className, createLog(message));
//     }
// 
//     public static void d(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.d(className, createLog(message));
//     }
// 
//     public static void v(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.v(className, createLog(message));
//     }
// 
//     public static void w(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.w(className, createLog(message));
//     }
// 
//     public static void wtf(String message) {
//         if (!isDebuggable())
//             return;
// 
//         getMethodNames(new Throwable().getStackTrace());
//         Log.wtf(className, createLog(message));
//     }
// 
// }


// Path: old-library-with-sample/src/main/java/com/rocko/annotation/ViewInstaller.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CompoundButton;
import android.widget.RadioGroup;
import com.rocko.common.DebugLog;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

package com.rocko.annotation;




/**
 * 为带InitView注解的View控件初始化并设置监听器的加载器<br>
 * 主要方法： {@link #processAnnotation(Object obj)}
 *
 * @author Mr.Zheng
 * @date 2014年8月11日21:59:01
 */
public class ViewInstaller {

    public static void processAnnotation(Activity obj) {
        process(obj);
    }

    // public static void processAnnotation(Fragment obj) {
    // processAnnotation(obj);
    // }

    /**
     * 初始化控件，处理View控件的Annotation注解
     *
     * @param obj Object实例对象 其或父类应有findViewById方法
     */
    private static void process(Object obj) {
        int viewId; // 当前Field注解的id值
        View view; // 控件
        InitView initView; // InitView注解
        ContentView layoutView;// LayoutView注解
        try {
            // 获取obj对象的类
            Class cl = obj.getClass();
            /* 设置setContentView */
            Method method = cl.getDeclaredMethod("onCreate", Bundle.class);
            layoutView = method.getAnnotation(ContentView.class);
            if (layoutView != null)
                ((Activity) obj).setContentView(layoutView.id());
            // 获取指定obj对象的所有Field，并遍历每个Field
            for (Field f : cl.getDeclaredFields()) {
                initView = f.getAnnotation(InitView.class);
                if (initView != null) {
                    DebugLog.v(">>>>>注解的field：" + f.getName());