美文网首页
Android自定义注解实现简单的ButterKnife

Android自定义注解实现简单的ButterKnife

作者: itfitness | 来源:发表于2022-01-06 22:01 被阅读0次

目录

实现步骤

1.创建注解

创建的注解很简单,让注解作用于属性,并且运行时可见(@Retention默认就是运行时可见),然后注解的属性为整形(使用时接收控件id),代码如下:

@Target(AnnotationTarget.PROPERTY)//作用于属性
@Retention
annotation class BindView(val viewId:Int)
2.绑定控件

创建ButterKnife工具类,在ButterKnife中创建一个bind方法,用来读取注解的值并且通过findViewById给控件赋值

object ButterKnife {
    fun bind(activity:Activity){
        val activityClazz = activity::class
        //遍历类中的属性
        activityClazz.declaredMemberProperties.forEach {viewField->
            //找出有BindView注解的属性
            if(viewField.hasAnnotation<BindView>()){
                //给属性赋值
                viewField.findAnnotation<BindView>()?.let { bindViewAnnotation->
                    viewField.isAccessible = true
                    viewField.javaField?.set(activity,activity.findViewById(bindViewAnnotation.viewId))
                }
            }
        }
    }
}
3.Activity中使用

使用步骤跟ButterKnife几乎一样,我们这里是使用TextView做的测试,在绑定控件后给控件设置了显示的文字,代码如下:

class MainActivity : AppCompatActivity() {
    @BindView(R.id.tv_msg)
    private lateinit var tvMsg:TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        ButterKnife.bind(this)
        tvMsg.text = "你好"
    }
}

最终运行结果如下:


案例源码

https://gitee.com/itfitness/butterknife-demo

相关文章

网友评论

      本文标题:Android自定义注解实现简单的ButterKnife

      本文链接:https://www.haomeiwen.com/subject/nnkdcrtx.html