ButterKnife 官网
ButterKnife是一个提高开发效率的工具,它可以通过注解的方式来绑定控件及点击事件。
省去了findViewById 和 setOnClickListener
先来看看怎么配置,android studio大多数库配置都是只需要加一句 compile,例如:
compile 'com.android.support:appcompat-v7:24.2.1'
ButterKnife的配置稍微复杂一点,需要添加apt的支持
第一步,在整个项目的gradle中添加如下:
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
//ButterKnife添加
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
第二步,在使用ButterKnife的Model中添加如下
顶部添加
apply plugin: 'com.android.application'
//ButterKnife添加
apply plugin: 'com.neenbedankt.android-apt'
编译添加
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
//ButterKnife添加
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
}
好了,添加完成之后就可以使用ButterKnife了
怎么使用呢
我们在我们的界面里添加一个Button和一个TextView
然后,在对应的Activity中绑定TextView和Button,并给Button按钮添加点击事件,在点击的时候,
让TextView显示一个click文本。
直接看用ButterKnife怎么来做
public class MainActivity extends AppCompatActivity {
@BindView(R.id.textView)
TextView textView;
@BindView(R.id.button)
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
@OnClick(R.id.button)
public void onClick() {
textView.setText("click");
}
}
这就可以了,通过@BindView来绑定控件,@OnCick来绑定点击事件
注意,这句话一定不要忘记 ButterKnife.bind(this);
这是ButterKnife进行绑定的操作,没有这句话是绑定不上的。
嗯,有人说了,这么写也不一定快多少,还要多添加依赖库
是,如果你手写这些代码当然快不了多少,如果我跟你说这些代码是自动生成的,是不是就快了
再来介绍一个Android Studio的插件Android ButterKnife Zelezny
在Preference/Plugins标签里
搜索ButterKnife就能找到,安装之后重启Android Studio就可以使用了
重启之后,这样使用
mac版本快捷键 Comand+N
windows版本快捷键 alt + insert
在java代码里,选中你要绑定控件的layout文件
按快捷键
选择Generate ButterKnife Injections
如果你的这界面和我的不一样,说明你跟我装的studio插件是不一样的,有ButterKnife这个就可以了,其他忽略
之后会出现这个界面,Element是类型,ID当然那个就是你layout文件中对应的ID,OnClick是询问是否绑定
点击事件,默认不绑定,你可以勾上,Variable Name是绑定之后的变量名称
点击Confirm就完成了
示例下载地址:https://github.com/dengdaijc/ButterKnifeTest