本文目录
ButterKnife 概述
ButterKnife
是大神JakeWharton
写的一个View
注入框架,目前在Android开发中被广泛使用,其机制是在编译时生成新的class
文件,比起运行时用反射的注入框架,其性能更好,在运行时对程序的性能几乎没有任何影响。
官网:https://github.com/JakeWharton/butterknife
使用前准备
添加依赖
首先在Project
的build.gradle
文件中的dependencies
节点下添加如下代码
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.1'
然后在Module
的build.gradle
文件中添加如下代码
在顶部apply 下添加一行apply plugin: 'com.jakewharton.butterknife'
android
节点下添加Java8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dependencies
节点下添加依赖
implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
具体添加如下:
ButterKnife绑定
Activity绑定
Activity
中使用在onCreate
方法中添加
//绑定activity
ButterKnife.bind(this);
Fragment绑定
在Fragment
中绑定的代码如下,onCreateView
方法中绑定,onDestroy
方法中解绑
public class BlankFragment extends Fragment {
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_blank, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onDestroy() {
super.onDestroy();
unbinder.unbind();
}
}
RecyclerView Adapter绑定
RecyclerView
中在ViewHolder
的构造方法中绑定即可
class Myholder extends RecyclerView.ViewHolder{
TextView mTextView;
public Myholder(@NonNull View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
mTextView = itemView.findViewById(R.id.textView);
}
}
基本用法
控件注解
控件注解在控件上加上@BindView()
即可,括号里填上控件的id
@BindView(R.id.username)
EditText mUsernameEdit;
@BindView(R.id.password)
EditText mPasswdEdt;
事件注解
单击事件绑定
@OnClick({R.id.button, R.id.button2})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.button:
break;
case R.id.button2:
break;
}
}
长按事件绑定
@OnLongClick({R.id.button, R.id.button2})
public void onViewLongClicked(View view) {
switch (view.getId()) {
case R.id.button:
break;
case R.id.button2:
break;
}
}
其他可以事件值:@OnCheckedChanged
、@OnEditorAction
、@OnFocusChange
、@OnItemClick
、@OnTouch
资源注解
绑定字符串
@BindString(R.string.app_name)
String mString;
其他可以绑定的值:@BindArray
、@BindBitmap
、@BindBool
、@BindColor
、@BindDimen
、@BindDrawable
、@BindFloat
、@BindInt
ButterKnife 插件
通过ButterKnife
插件的使用,我们能更加方便的添加ButterKnife
的注解
插件添加
添加方法如下,在Android Studio 插件市场中搜索Android ButterKnife zelezny
插件使用
自动生成View注解
在onCreate
方法中的 布局文件中 右击弹出窗口,选择 Generate
选项,
自动生成点击事件注解
点击事件注解跟前面的View注解类似,不同的是需要在弹框中勾选OnClick
按钮