在Android开发中butterknife是一个很好的对资源初始化的工具,它可以使你的代码简洁通俗易懂,同时配合Android ButterKnife Zelezny插件可以让你写代码的速度提升至少数十倍。 。

单模块化开发使用步骤

第一步

在app底下的build.gradle中添加这两个依赖。

dependencies { compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'}

第二步

在activity中如使用即可,别忘了在oncreate方法中添加 ButterKnife.bind(this);

class ExampleActivity extends Activity { @BindView(R2.id.user) EditText username; @BindView(R2.id.pass) EditText password;...}

一切顺其自然,一般照着做都不会有问题。

多模块化开发使用步骤(ibrary中如何使用butterknife.)

第一步

在全局build.gradle 配置,特别注意版本,

不要使用最新的8.5.1 而应该使用8.4.0,不要问我为什么。

buildscript {repositories {jcenter()mavenCentral()}dependencies {classpath 'com.android.tools.build:gradle:2.2.3'classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}}

第二步

在library里正常引入butterknife(这里可以使用最新版本8.5.1)。

1、在library中build.gradle中引入插件

apply plugin: 'com.jakewharton.butterknife'

2、 dependencies 中添加依赖

dependencies { compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'}

到此使用前期工作就算做完了,下面介绍在library中如何使用和注意事项。

butterknife在library activity中的使用和注意事项
1、用R2代替R findviewid
 @BindView(R2.id.textView)TextView textView;@BindView(R2.id.button1)Button button1;@BindView(R2.id.button2)Button button2;@BindView(R2.id.button3)Button button3;@BindView(R2.id.image)ImageView image;
2、在click方法中同样使用R2,但是找id的时候使用R。
@OnClick({R2.id.textView, R2.id.button1, R2.id.button2,R2.id.button3, R2.id.image})public void onViewClicked(View view) {switch (view.getId()) {case R.id.textView:break;case R.id.button1:break;case R.id.button2:break;case R.id.button3:break;case R.id.image:break;}}
3、特别注意library中switch-case的使用,在library中是不能使用switch- case 找id的,解决方法就是用if-else代替。
 @OnClick({R2.id.textView, R2.id.button1, R2.id.button2, R2.id.button3, R2.id.image})public void onViewClicked(View view) {int i = view.getId();if (i == R.id.textView) {} else if (i == R.id.button1) {} else if (i == R.id.button2) {} else if (i == R.id.button3) {} else if (i == R.id.image) {}}
注意问题

当library使用R2时候可会报红,没关系,rebuild 就好了

强烈建议大家 用插件 Android ButterKnife Zelezny 生成 然后在library中根据每个地方修改成R2。