Butterknife 是Jake Wharton开发的一个依赖注入框架,
Github地址:https://github.com/JakeWharton/butterknife
使用该框架能为我们省去大量的代码,比如最常见的findViewById 这样的代码,如果一个类中有大量的View,那么按照常见的写法就会每个view写上一行findViewById。
Butterknife不仅能让我们偷懒少些许多代码,而且其使用了注解处理器,我们编译的时候,ButterKnifeProcessor 类的 process() 方法便会执行,搜索到所有的 ButterKnife 注解(@BindView),然后生成一个 Java 类。所以运行时和我们使用findViewById相比性能并不会有啥影响。
Butterknife目前最新是8.4.0版本,AndroidStudio导入方式参考官方github。
在Activity或者Dialog中:
首先在Activity的onCreate方法 或者Dialog的初始化方法中绑定直接绑定this:
ButterKnife.bind(this);
当然我们的不只是在Activity中才需要初始化View,在其他地方初始化也很简单,传入一个所有View的根View。
ButterKnife.bind(view);
下面是常见的一些使用场景:
- 绑定一个View (View不能为private 或者static):
@BindView(R.id.imageView)
ImageView imageView;
- 给一个View添加点击事件:
@OnClick(R.id.imageView)
public void onImageView() {
Toast.makeText(this, "onImageClick", Toast.LENGTH_SHORT).show();
}
- 给多个View添加点击事件:
@OnClick({R.id.imageView, R.id.textView})
@Override
public void onClick(View v) {
Toast.makeText(this, v.getClass().getSimpleName() + ":onClick", Toast.LENGTH_SHORT).show();
}
- 给ListView setItemClickListener:
@OnItemClick(R.id.listView)
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
Toast.makeText(this, "onItemClick" + position, Toast.LENGTH_SHORT).show();
}
通常我们为一个View设置的各种监听回调,比如
OnCheckedChanged
OnEditorAction
OnFocusChange
OnLongClick
OnItemSelected
OnPageChange
OnTouch
OnTextChanged
Butterknife 都能够通过一行简单的注解帮我们实现,使用方法也很简单,确实能让我们少些很多代码,真是一个偷懒神器。
网友评论