前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )

【IOC 控制反转】Android 事件依赖注入 ( 事件三要素 | 修饰注解的注解 | 事件依赖注入步骤 )

作者头像
韩曙亮
发布2023-03-29 17:27:07
8380
发布2023-03-29 17:27:07
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

总结

Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , 以及注解属性 ; 在 Activity 基类中 , 获取该注解 以及 注解属性 , 进行相关操作 ;

一、Android 事件设置三要素


根据以下设置组件点击事件的代码 , 分析事件注入的要素 :

代码语言:javascript
复制
textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        
    }
});
  • 点击事件 : 设置点击事件 , 需要调用 View.setOnClickListener 方法进行设置 ;
  • 监听器类型 : 设置监听器类型 , 一般是 View.OnClickListener ;
  • 事件触发回调方法 : 事件触发后的回调方法 , 原型为 public void onClick(View v) ;

为了兼容各种事件注入 , 如长按事件 , 上述事件设置三要素分别是

  • 点击事件 : View.setOnLongClickListener
  • 监听器类型 : View.OnLongClickListener
  • 事件触发回调方法 : public boolean onLongClick(View v)
代码语言:javascript
复制
textView.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        return false;
    }

如果要兼容各种不同的事件 , 就需要定义不同的注解 , 这里引入一个修饰注解的注解 , 为不同的时间注入注解进行配置 ;

二、修饰注解的注解


在 Java Web 开发中 , 经常使用注解进行相关配置 , 如 Spring ;

配置 EventBase 注解 , 用于修改事件注入的注解 , 点击事件与长按事件 , 都要使用下面的 EventBase 注解进行修饰 , 只是事件设置

3

要素设置不同 ;

代码语言:javascript
复制
package kim.hsl.ioc_lib;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 *  用于注解上的注解
 *  用于依赖注入视图
 */
@Target(ElementType.ANNOTATION_TYPE)   // 该注解作用于注解上
@Retention(RetentionPolicy.RUNTIME)    // 注解保留到运行时
public @interface EventBase {
    /**
     * 设置事件监听的方法
     * @return
     */
    String listenerSetter();

    /**
     * 设置监听器类型
     * @return
     */
    Class<?> listenerType();

    /**
     * 事件触发后的回调方法
     * @return
     */
    String callbackMethod();
}

使用上述注解修饰 OnClick 注解 :

代码语言:javascript
复制
package kim.hsl.ioc_lib;

import android.view.View;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 *  用于依赖注入视图
 */
@Target(ElementType.METHOD)   // 该注解作用于方法上
@Retention(RetentionPolicy.RUNTIME)    // 注解保留到运行时
@EventBase(
        listenerSetter = "setOnClickListener",
        listenerType = View.OnClickListener.class,
        callbackMethod = "onClick")
public @interface OnClick {
    int[] value();    // 接收 int 类型数组
}

三、Android 事件依赖注入步骤


Android 事件依赖注入步骤 :

  • ① 声明注解 : 声明视图注入注解 OnClick ;
  • ② 声明修饰注解的注解 : 声明修饰注解的注解 EventBase , 用于配置事件
3

要素 ;

  • ② 客户端 Activity : 定义 MainActivity , 继承 BaseActivity , 在方法上使用 @OnClick 注解注入视图点击事件 ;
  • ③ IOC 库中的 Activity 父类 : 定义 BaseActivity , 在 BaseActivity 中的 onCreate 方法中 , 处理依赖注入相关逻辑 ;
  • ④ 依赖注入逻辑 : 获取 Activity 类 , 并使用反射获取类中的所有属性字段 , 获取所有的 @OnClick@EventBase注解 , 如果找到该注解 , 执行 setOnClickListener 设置视图组件对象的点击方法 ;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 总结
  • 一、Android 事件设置三要素
  • 二、修饰注解的注解
  • 三、Android 事件依赖注入步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档