深入理解ButterKnife

最近公司使用了自己的框架,为了提高工作效率,使用了注释开发。使得程序可读性和开发效率更快。
其实现原理就是:使用JAVA的反射机制,进行反射动态加载编译,进而完成findViewById的工作。
但是反射也是有其缺点的就是会降低程序的运行速度。
而且框架虽然使用了注释编译,但只是一定程度上降低了开发的工作量,因为要自己打@BoundView(R.id.id) private View view;
这句话是要自己打的,因为毕竟是自己开发的注释,没有与其相对应的插件,进行CreateLayout这样只需要简单点击几下就可以自动生成大量代码的工具。所以我就想,把两者结合,那不就是最快了吗?这是一个引子,说道我对这个东西设计的看法。
后来自己听网课,偶然听到了Butter Knife 看见了它的实现方式。和我不某而合。
但是这里也只是解决了生成代码更快,没有解决反射带来的缺陷。所以还是有些不满意的。直到最近看到这个帖子才发现,黄油刀太帅了。他的实现方式和afinal不同其实现方式是在编译阶段进行代码生成,这样即提高了代码的执行效率,有提高了开发的效率。简直完美!

那么这么好的东西,我们就来研究研究吧。

第一部分使用Butter Knife
1.配置编译环境
在buildscript{
dependencies {
//添加
classpath’com.neenbedankt,gradle.plugins:android-apt:1.8’
}
}
//添加插件
apply plugin:’com.neenbedankt.android-apt’
//添加依赖
dependencies{
complie’com.neenbedankt,gradle.plugins:android-apt:1.8’
apt ‘com.jakewharton:buttrtknife-compiler:8.1.0’
}

2.配置完成了环境就是在程序中使用了
@Bind(R.id.title) TextView title; //这里是可以通过alt+insert 完成自动生成代码功能的。
//上面的是完成View的初始化代码 下面这句话是完成注册点击监听
@OnClick(R.id.button)
void sayHello(){

}

3.初始化布局之后,调用bind方法
setContentView(R.layout.layout);
ButterKnife.bind(this);
//注一定要在初始化layout之后调用绑定Layout

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值