xUtil3 view()设计之注解设计
对View处理无非就是两件事:
1. 对View进行赋值;
2. 对View添加相应的监听事件;
同时Layout布局文件也是View的子类,但Layout是依托Activity或Fragment等存在的,所以单独处理,因而定义了如下三类注解:
a). ContentView:用来表示将要显示最顶层View,以Activity为例,通常为Layout,用来加载相关的布局View,会委托setContentView()函数进行处理
package org.xutils.view.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ContentView {
int value();
}
其中的value()定义为int类型,其实是用的资源id来表示,大部分为R.layout.activity_main。
b). ViewInject:用来对View进行注入赋值,基本上是调用findViewById来完成。
package org.xutils.view.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewInject {
int value();
/* parent view id */
int parentId() default 0;
}
其中value为id,parentId有默认值为0,当parentId > 0时,代表有父容器。
c). Event: 对View的事件进行处理的注解
package org.xutils.view.annotation;
import android.view.View;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 事件注解.
* 被注解的方法必须具备以下形式:
* 1. private 修饰
* 2. 返回值类型没有要求
* 3. 参数签名和type的接口要求的参数签名一致.
* Author: wyouflf
* Date: 13-9-9
* Time: 下午12:43
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Event {
/**
* 控件的id集合, id小于1时不执行ui事件绑定.
*
* @return
*/
int[] value();
/**
* 控件的parent控件的id集合, 组合为(value[i], parentId[i] or 0).
*
* @return
*/
int[] parentId() default 0;
/**
* 事件的listener, 默认为点击事件.
*
* @return
*/
Class<?> type() default View.OnClickListener.class;
/**
* 事件的setter方法名, 默认为set+type#simpleName.
*
* @return
*/
String setter() default "";
/**
* 如果type的接口类型提供多个方法, 需要使用此参数指定方法名.
*
* @return
*/
String method() default "";
}
以上是xUtil3的与View相关的几类注解的设计,注解的注释相当详细,将在接下来的篇幅中讨论各注解的使用方法。
本文介绍xUtils3框架中的视图注解设计,包括ContentView用于设置顶层视图,ViewInject负责注入视图元素,Event则处理视图事件绑定。这些注解简化了Android应用开发中的UI操作。
6524

被折叠的 条评论
为什么被折叠?



