xutil3学习笔记系列(一)——view工具之注解设计

本文介绍xUtils3框架中的视图注解设计,包括ContentView用于设置顶层视图,ViewInject负责注入视图元素,Event则处理视图事件绑定。这些注解简化了Android应用开发中的UI操作。
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相关的几类注解的设计,注解的注释相当详细,将在接下来的篇幅中讨论各注解的使用方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值