一、ButterKnife简介
ButterKnife是注解中相对简单易懂的开源框架,ButterKnife是控件注入框架,旨在帮助安卓开发者省去初始化控件的重复性工作,简单快捷地初始化布局文件中的控件,极大地提升开发效率。
主要优点如下;
1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率。
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强
下载地址:https://github.com/JakeWharton/butterknife
二、使用步骤
1.在Setting->Plugins中输入butterknife添加插件
2.Android ButterKnife Aelezny ->点击安装
3. 下project的build.gradle里面添加
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
在Module里的build.gradle里面添加
compile 'com.jakewharton:butterknife:8.0.1'
apt 'com.jakewharton:butterknife-compiler:8.0.1'
4.省略findViewById()使用
1)在Activity中使用
先设置好布局之后调用:ButterKnife.inject(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
自动导入注解,即可获取到控件对象。
@InjectView(R.id.tv_text)
TextView tvText;
值得注意的是,
在View变量声明的时候不能为private或者static。
2)在Fragment中使用
先设置布局之后调用如下代码;
View view = inflater.inflate(R.layout.fragment, container, false);
ButterKnife.inject(this, view);
自动导入注解,即可获取到控件对象。
@InjectView(R.id.tv_text)
TextView tvText;
3)Adapter ViewHolder中使用
static class ViewHolder {
@InjectView(R.id.tv_text)
TextView tvText;
public ViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
5.省略setOnClickListener()的使用
1)普通的onClickListener()中
@OnClick(R.id.btn_button)
void finishA(View view) {
finish();
}
值得注意的是:
这里方法仍然不能是private和static, 并且可以有一个参数View,也可不写。
2)ListView的OnItemClick
@OnItemSelected(R.id.list_view)
void onItemSelected(int position) {
}
或者也可以使用
@OnItemSelected(value = R.id.maybe_missing, callback = NOTHING_SELECTED)
void onNothingSelected() {
}
3)CheckBox的OnCheckedChanged
//checkBox radioButton状态改变监听
@OnCheckedChanged({R.id.cb1, R.id.cb2})
void checkChange(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.cb1:
if (isChecked) {
//dosomething
}
break;
case R.id.cb2:
if (isChecked) {
//dosomething
}
break;
}
}
4)可以一次指定多个id,为多个View绑定一个事件处理方法
@OnClick({R.id.button_1, R.id.button_2, R.id.button_3, R.id.button_4})
void editViewsClicked() {
Toast.makeText(this, "You click the Button!", Toast.LENGTH_SHORT).show();
}
5)Resource 资源的绑定
class ExampleActivity extends Activity {
@BindString(R.string.title) String title;
@BindDrawable(R.drawable.graphic) Drawable graphic;
@BindColor(R.color.red) int red; // int or ColorStateList field
@BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
}
看到此,是不是接的ButterKnife的简单使用是不是很简单,谢谢浏览!
更详细的说明可以查阅官方文档:http://jakewharton.github.io/butterknife/