前言
新年快乐,这是我的狗年第一更。
ButterKnife实际上可以出了很久了,我也用了很久很久了,但是我没有仔细的看过它的原理,所以回顾一下这个神器。我主要通过阅读他人的文章来回顾这个东东,下文并不是deep层次的东西,我用来学习巩固,并且记录下来,以后可以用的着。
简介
在开发过程中,我们总是需要使用findViewById或者是一些点击事件等等。简单的说ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成(偷懒必备)。由大神JakeWharton开源。Githubhttps://github.com/JakeWharton/butterknife
优点
1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强
集成
在根build.gradle中,如下:
dependencies {
classpath'com.jakewharton:butterknife-gradle-plugin:8.8.1'
}
在主module中加入,如下:
compile'com.jakewharton:butterknife:8.8.1'
annotationProcessor'com.jakewharton:butterknife-compiler:8.8.1'
重新同步一下就好了。
注意事项
1、Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
2、Fragment ButterKnife.bind(this, mRootView);
3、属性布局不能用private or static修饰,否则会报错
4、setContentView()不能通过注解实现。
5、在Fragment生命周期中,onDestoryView也需要Butterknife.unbind(this)
6、ButterKnife不能再你的library module中使用,这是因为你的library中的R字段的id值不是final类型的,但是你自己的应用module中确是final类型的。
插件
有时候使用@BindView还是嫌累怎么办,出来了一个快捷的方式,使用Zelezny插件,帮助开发者一键完成所有xml对象的实例引用。
图1-1插件使用
鼠标移到需要引用的布局文件上,上图是R.layout.activity_setting.,右键选择generate,选择一个带有butterKnife字符的按键,选择需要实例引用的对象。
安装插件
Setting->Plugins –>搜索Zelezny,点击右侧安装就可以了。
使用总结
参考https://www.jianshu.com/p/2967d0342d80,写的很详细的。
深度讲解
参考https://www.jianshu.com/p/b8b59fb80554,写的很棒。
总结
我们刚开始不能写出很好的轮子,但是我们要去看好的轮子,吸收经验,增长实力,同时分享好的轮子,可以让我们走的更远。
作者:william_zhang
欢迎关注。
领取专属 10元无门槛券
私享最新 技术干货