版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQ243223991/article/details/50033131
/**
* @author anqiansong
*初始化布局
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface InitContentView {
public int resId() default -1;
}
-----------------------------------------------
/**
* @author anqiansong
*初始化控件
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface InitWidget {
public int id() default -1;
}
---------------------------------------------
public class InjectUtil {
/**注解解析
* @param activity
*/
public static void inject(Activity activity){
Class clazz=activity.getClass();
if(clazz.isAnnotationPresent(InitContentView.class));{
InitContentView contentView=(InitContentView) clazz.getAnnotation(InitContentView.class);
try {
Method method=clazz.getMethod("setContentView", int.class);
int id=contentView.resId();
method.invoke(activity, id);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Field[] fields=clazz.getDeclaredFields();
if(fields!=null){
for(Field field:fields){
if(field.isAnnotationPresent(InitWidget.class)){
InitWidget widget=field.getAnnotation(InitWidget.class);
int id=widget.id();
if(id>0){
field.setAccessible(true);
try {
field.set(activity, activity.findViewById(id));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
}
}
}
}
}
-----------------------------------------------
@InitContentView(resId=R.layout.activity_main)
public class MainActivity extends Activity {
@InitWidget(id=R.id.textView)
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
InjectUtil.inject(this);
tv.setText("这是一个注解例子");
}
}