用注解+反射的方式,实现layout文件与Activity映射

本文介绍了一种在Android应用中简化布局映射的注解式方法,通过自定义注解和反射机制,减少findViewbyId代码的冗余,使代码结构更加清晰。此方法适用于第三方依赖注入库的成熟应用,如ButterKnife或Dagger2,旨在提高开发效率和代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是之前工作时经常用到的一种映射方式,自己感觉非常不错,可以省却繁琐的findViewbyId的代码,代码结构清晰。

(1)创建注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.TYPE})
public @interface LibViewMapping {
         String str_ID();
         String type();
}
(2)在Activity中为类及其控件属性添加注解

         @LibViewMapping(str_ID="lib_goback",type="id")
         private LinearLayout bt_topleft;
         @LibViewMapping(str_ID="lib_more",type="id")
         private ImageButton bt_topright;       
         ……
}
(3)利用反射创建layout.xml文件及其内部资源与Activity类及属性的映射工具类

利用java.lang.reflet包中的反射方法遍历类对象的属性Field[] fields = clazz.getDeclaredFields(),获取属性上的注解 viewMapping = field.getAnnotation(LibViewMapping.class),然后为控件属性设置value
         str_ID = viewMapping.str_ID();
         type = viewMapping.type();
         field.setAccessible(true);
         field.set(object, rootView.findViewById(context.getResources().getIdentifier(str_ID, type, context.getPackageName())));

(4)在Activity的onCreate()方法中调用工具类方法


现在第三方的依赖注入库已经有比较成熟的了,可选择性也比较多,具体项目中可尝试使用依赖注入库ButterKnife 或 Dagger2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值