在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。
关于我
微信公众号:infree6 或者直接扫码