官网地址以及GitHub地址
官方地址:http://jakewharton.github.io/butterknife/
GitHub地址:https://github.com/JakeWharton/butterknife
API访问地址:http://jakewharton.github.io/butterknife/javadoc/
在android Studio项目中配置使用ButterKnife
- Step one:在Project的 build.gradle 中添加如下代码(当项目为依赖项目的时候才要添加,如果为主项目无需添加)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1' //添加这一行
}
}
- build.gradle里面设置
- Step two:如果项目为依赖项目的时候在App的 build.gradle 中添加如下代码:
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
- dependencies中添加:
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
如果是导入androidx就关联如下
//View的依赖注入框架
implementation 'com.jakewharton:butterknife:10.2.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
PS:如果你是依赖调用R2代替成R
ButterKnife 优势
1. 强大的View绑定,Click事件处理功能以及资源内容,简化代码,提升开发效率;
2. 方便的处理Adapter里的ViewHolder绑定问题;
3. 运行时不会影响APP效率,使用配置方便;
4. 代码清晰,可读性强。
ButterKnife 的使用
首先先绑定layout
在activity中绑定:
ButterKnife.bind(this);
在fragment里面绑定:
protected Unbinder unbinder;
unbinder = ButterKnife.bind(this, mView);
在fragment解绑是调用
1.绑定单个view
@BindView(R.id.tv_recive_data)
TextView tvReciveData;
2.多个监听事件
@OnClick({R.id.bt_connect_bth, R.id.bt_send_xml_diesel, R.id.bt_send_xml_gasoline, R.id.bt_send, R.id.bt_clear_data})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bt_connect_bth:
/*蓝牙连接*/
break;
case R.id.bt_send_xml_diesel:
/*柴油车连接初始化*/
break;
case R.id.bt_send_xml_gasoline:
/*汽油车连接初始化*/
break;
case R.id.bt_send:
/* 发送检验码*/
break;
case R.id.bt_clear_data:
/*清除接收的日志*/
break;
}
}
2.1单个监听
@OnClick(R.id.report_and_upload_btn)
public void onViewClicked() {
showTestResultDialog();
}
3.checkBox radioButton状态改变监听
@OnCheckedChanged(R.id.cb_light)
void checkChange(CompoundButton buttonView, boolean isChecked) {
if (buttonView.getId() == R.id.cb_light) {
if (isChecked) {
zXingView.openFlashlight(); // 打开闪光灯
} else {
zXingView.closeFlashlight(); // 关闭闪光灯
}
}
}
/**
* 性别选中事件
* @param view
* @param ischanged **/
@OnCheckedChanged({R.id.male, R.id.female})
public void onRadioCheck(CompoundButton view, boolean ischanged) {
switch (view.getId()) {
case R.id.male:
if (ischanged) {
ToastUtils.showShort("男孩子哦");
}
break;
case R.id.female:
if (ischanged) {
ToastUtils.showShort("女孩子哦");
}
break;
default:
break;
}
}
/**
* 多个CheckBox的监听
*/
@OnCheckedChanged({R.id.wjcb, R.id.dtcb, R.id.dpcb})
public void checkBox(CompoundButton view, boolean isChange) {
switch (view.getId()) {
case R.id.wjcb:
if (isChange) {
ToastUtils.normal("选择外检");
}
break;
case R.id.dtcb:
if (isChange) {
ToastUtils.normal("选择动态");
}
break;
case R.id.dpcb:
if (isChange) {
ToastUtils.normal("选择底盘");
}
break;
default:
break;
}
}
文章参考的地址:
https://blog.csdn.net/shenggaofei/article/details/78175428
https://blog.csdn.net/qq_36946446/article/details/83542314
官网: