在Android开发中butterknife是一个很好的对资源初始化的工具,它可以使你的代码简洁通俗易懂,同时配合Android ButterKnife Zelezny插件可以让你写代码的速度提升至少20倍。
在一般app中我们都是单组件开发,什么意思呢,你只有一个主moduel,所有代码不管是java,xml,资源,依赖库都在app中,这个时候使用butterknife是非常简单的,如GitHub地址描述照着做就可以了。
dependencies {
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}
class ExampleActivity extends Activity {
@BindView(R2.id.user) EditText username;
@BindView(R2.id.pass) EditText password;
...
}
一切顺其自然,一般照着做都不会有问题。
下面介绍根据我无限尝试总结出的在组件化开发中library中如何使用butterknife.
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
}
}
apply plugin: 'com.jakewharton.butterknife'
dependencies {
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}
到此使用前期工作就算做完了,下面介绍在library中如何使用和注意事项。
@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) {
}
}
gradle配置ButterKnife
主Module使用
副module(library)中使用
注意问题
特别注意:当副Module使用R2时候可会报红,没关系,rebuild 就好了
强烈建议大家 用插件 Android ButterKnife Zelezny 生成 然后在library中根据每个地方修改成R2。
自此介绍完毕,下面放出ButterKnifedemo链接https://github.com/CeleryIce/ButterKnifeDemo
欢迎大家加入Android进阶学习交流群:4112676,分享各自的见解和看法。