Buffer Knife(安卓里面的视图注入库)
项目Github地址
http://jakewharton.github.io/butterknife/
butterKnife
是使用生成文件的方式来注解
ButterKnife
优势:
强大的View绑定和Click事件处理功能,简化代码,提升开发效率
方便的处理Adapter里的ViewHolder绑定问题
运行时不会影响APP效率,使用配置方便
代码清晰,可读性强
**注:**Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
使用方法:
在
build.gradle
的dependencies
中加入compile 'com.jakewharton:butterknife:7.0.1'
ButterKnife.bind(this);
绑定Activity
必须在setContentView()
之后。绑定view
@Bind(R.id.hello_world)
TextView mHelloWorldTextView;
@Bind(R.id.app_name)
TextView mAppNameTextView;//view
- 绑定资源
@BindString(R.string.app_name)
String appName;//sting
@BindColor(R.color.red)
int textColor;//颜色
@BindDrawable(R.mipmap.ic_launcher)
Drawable drawable;//drawble
@Bind(R.id.imageview)
ImageView mImageView;
@Bind(R.id.checkbox)
CheckBox mCheckBox;
@BindDrawable(R.drawable.selector_image)
Drawable selector;
- 点击事件的绑定: 不用声明view,不用
setOnClickLisener()
就可以绑定点击事件
@OnClick(R.id.submit)
public void submit() {
// TODO submit data to server...
}
- 也可以加一个view对象,特定的类型会被自动转换
@OnClick(R.id.submit)
public void submit(Button button) {
// TODO submit data to server...
}
- 还可以批量为多个控件添加为同一个响应函数
@onClick({ R.id.submit1, R.id.submit2, R.id.submit3 })
public void submit(Button button){
// TODO submit data to server...
}
- 对一组View进行统一操作
@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;