自己写一个布局注解

来源:互联网 发布:银行大数据应用 编辑:程序博客网 时间:2024/06/03 21:57


xUtils框架的注解相信大家都使用过,由于各种原因,项目需要自己写一个,所以mark一下


这是用法 基本和xUtils的一样

@HkContentView(R.layout.activity_main)public class MainActivity extends AppCompatActivity {



新建一个ContentView类

@Target(ElementType.TYPE)//注解目标    TYPE:类@Retention(RetentionPolicy.RUNTIME)public @interface HkContentView {    int value();//接收布局id}

主要代码:利用反射来完成(代码都有注释)

 /**     * 传需注解activity     *     * @param activity     */    public static void HKinjectContentView(Activity activity) {        Class activityClass = activity.getClass();//获取activity.class        if (activityClass.isAnnotationPresent(HkContentView.class)) {//判断这个class有没有用注解            // 得到activity这个类的ContentView注解            HkContentView contentView = (HkContentView) activityClass.getAnnotation(HkContentView.class);//获取注解文件            // 获取注解的值(布局ID)            int layoutId = contentView.value();            // 使用反射调用setContentView            try {                Method method = activityClass.getMethod("setContentView", int.class);                //私有方法                method.setAccessible(true);                method.invoke(activity, layoutId);            } catch (NoSuchMethodException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            } catch (InvocationTargetException e) {                e.printStackTrace();            }        }    }