Butter Knife已经出现好久了,最近在项目开发中,为了方便就开始使用这个注解框架,感觉还是不错的!是时候了解这个框架了!是JakeWharton大牛的出品!
官网: http://jakewharton.github.io/butterknife/
GitHub地址:https://github.com/JakeWharton/butterknife
JavaDocs地址: http://jakewharton.github.io/butterknife/javadoc/
最新的版本已经更新到了V7.0.1。首先去下载最新的jar包吧!提供一个下载连接
一. 使用配置
如果你还是eclipse平台上开发,那么就需要先在eclipse中配置一下,具体操作如下:
(1).将下载的jar包复制到libs目录下;
(2).项目右键-->Properties-->Java Compiler-->Annotation Processing,在右侧区域勾选Enable project specific settings.如下图所示:
(3).选择Annotation Processing下面的Factory Path,在右侧选择Add JARs。找出项目libs下的butterknife.jar点击Apply,OK。如图所示:
经过上面3补, Butter Knife已经在Eclipse中配置完毕,就可以正常使用了!
如果你使用的是Android Studio,那么配置就很简单,导入了butterknife的jar(或者在build.gradle中已经加入:compile 'com.jakewharton:butterknife:7.0.1 ' )。
二. 使用
接下来,我们就看看在代码里面具体是怎么使用的。
1.在Activity中,我们需要在onCreate()中调用ButterKnife.bind(this);就可以使用了,
绑定id就可以这么写
@Bind(R.id.tv1) TextView tv1; @Bind(R.id.btn1) Button btn1;事件监听,例如OnClickListener,就可以这么写
@OnClick(R.id.btn1) public void btnOnclick(){ Toast.makeText(this, "你点击了按钮", Toast.LENGTH_LONG).show(); }2.在 Fragment中onCreateView()方法中,调用ButterKnife.bind(this, view);就可以了,
其他的和在Activity中一样,没有区别。
3.在 ViewHolder 模式中注入
static class ViewHolder { @Bind(R.id.tv1) TextView tv1; @Bind(R.id.tv2) TextView tv2; public ViewHolder(View view) { ButterKnife.bind(this, view); } }4.事件注入
//不带参数 @OnClick(R.id.btn1) public void btnOnclick(){ } //带参数 @OnClick(R.id.btn1) public void btnOnclick(View view){ } //多个view注入同一事件 @OnClick({R.id.btn1,R.id.btn2,R.id.btn3}) public void onclick(){ }三.混淆
如果你代码混淆,那么就需要添加如下代码
-keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* <fields>; } -keepclasseswithmembernames class * { @butterknife.* <methods>; }至此, Butter Knife 的介绍就完毕了!相信大家已经有所了解了!(本人水平有限,有错误的地方,欢迎大家指出)