- 论坛徽章:
- 0
|
在android开发activity时需要通过findViewById取得布局中的view元素,但如果元素太多时需要重复调用该方法,从而导致代码臃肿。可以通过注解来精简代码。
主要注解类与annot processo- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.FIELD)
- public @interface ViewField {
- /**
- * view对应的id
- *
- * @return
- */
- int value();
-
- public static class Processor {
- public static void process(Activity activity) throws Exception {
- Field[] fields = activity.getClass().getDeclaredFields();
- ViewField annot = null;
- for (Field field : fields) {
- annot = field.getAnnotation(ViewField.class);
- if (annot != null) {
- field.setAccessible(true);
- field.set(activity, activity.findViewById(annot.value()));
- }
- }
- }
- }
- }
复制代码 Activity中调用示例- @ViewField(R.id.btn_ok)
- Button btnOK;
- @ViewField(R.id.et_orig)
- EditText etOrig;
- @ViewField(R.id.et_dest)
- EditText etDest;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.new_task_layout);
-
- try {
- ViewField.Processor.process(this);
- } catch (Exception e) {
- throw new RuntimeException("加载view错误", e);
- }
- }
复制代码 |
|