Android 项目中ButterKnife的基本使用

时间:2022-12-22 05:32:31

ButterKnife是一个开源的Android框架,方便的view绑定注解功能,可以省去大量的findViewById和setOnClickListener等代码,使开发更高效。

下面就看看如何在Android Studio项目中配置使用ButterKnife:

第一步:在Project的build.gradle中添加如下代码:

buildscript {
repositories {
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.7.0' //添加这一行
}

}

第二步:在module的build.gradle中添加如下代码:

apply plugin: 'com.jakewharton.butterknife'

dependencies中添加:

    compile 'com.jakewharton:butterknife:8.7.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'

这样配置就完成了。
此例中用到的是ButterKnife的8.7.0版本,具体使用时最好用更新的版本,配置方法也可能有所变动,可参考原作者给出的用法:
https://github.com/JakeWharton/butterknife

第三步,看看如何在activity中使用:
页面布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content" />


</LinearLayout>

布局中有一个按钮和一个文本,如果想实现点击按钮后,文字改变,对应Activity可以这么写:

package example.test.com.butterknifetest;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends Activity {

//下面四行代码绑定了布局文件中id为btn的Button和id为text的TextView,并分别命名为btn和tv
//同时注意新版本ButterKnife引用资源要用R2.id.XXX的形式
@BindView(R2.id.btn)
Button btn;
@BindView(R2.id.text)
TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this); //这一步是必须
}

//Button的点击事件的示例写法,方法名自行命名
@OnClick(R.id.btn)
public void btnClick() {
tv.setText("按钮已点");
}
}

注:ButterKinfe的注解标签因版本不同而有所变化。
8.0.0之前的Bind标签在8.0.0之后变成了BindView,而8.7.0之后在绑定view时,要用R2.id.XXX而不再是常用的R.id.XXX了。
具体变化情况和查看gitHub上的提交日志:
https://github.com/JakeWharton/butterknife/blob/master/CHANGELOG.md#version-800-2016-04-25