一、简介:
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。
▲ ButterKnife的优势:
1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2、方便的处理Adapter里的ViewHolder绑定问题
3、运行时不会影响APP效率,使用配置方便
4、代码清晰,可读性强
二、Android Studio 的配置插件
步骤(mac 版):
- 点击“Android Studio”------>选择“Preference”;
- 点击“Plugins”----->搜索“Android ButterKnife”插件;
- 点击“Android ButterKnife”安装,重启即可。
三、 基本配置:
1.在主项目中配置bulid.gradle:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
//添加这一行
// classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
//最新高版本
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.0'
}
}
2.在mouble 中配置bulid.gradle:
(1)添加头部:
//添加下面头部
apply plugin: 'com.jakewharton.butterknife'
(2)配置依赖:
android {
...
// Butterknife requires Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
//butterknife,配置下面 两行
//implementation 'com.jakewharton:butterknife:8.5.1'
// annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
//最新版本
implementation 'com.jakewharton:butterknife:10.2.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'
}
注意:
我的高版本配置,所以采用了butterknife:8.5.1版本。
3.ButterKnife的使用:
(1)点击“ setContentView(R.layout.activity_main);”中布局右键,会出现一个页面,如下:
(2)点击 generate 按钮,页面如下:
(3)点击 Generate ButterKnife Injections,页面如下:
(4)Element 的按钮按钮选中,生成对应的 ID 类似 findViewById;OnClick 选中,会在页面生成对应的点击事件,代码如下:
注意:这些代码都是自动生成的。
public class MainActivity extends AppCompatActivity {
/**
* 声明自动生成
* 类似 findViewById 的效果
*/
@BindView(R.id.bt_fixed)
Button btFixed;
@BindView(R.id.bt_casched)
Button btCasched;
@BindView(R.id.bt_scheduled)
Button btScheduled;
@BindView(R.id.bt_single)
Button btSingle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//自动生成
ButterKnife.bind(this);
}
/**
* 下面整个方法自动生成
* @param view
*/
@OnClick({R.id.bt_fixed, R.id.bt_casched, R.id.bt_scheduled, R.id.bt_single})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.bt_fixed:
break;
case R.id.bt_casched:
break;
case R.id.bt_scheduled:
break;
case R.id.bt_single:
break;
}
}
}