本文目錄
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
按鈕