本文主要是介绍深入理解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
这篇关于深入理解ButterKnife的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!