ButterKnife是什么
在安卓编程过程中,过多的findviewbyid操作实在过于繁琐,无意间了解到ButterKnife,十分简单实用。
ButterKnife是由国外一个大牛开源出来的一个项目,是为了用过注解的形式来在android中绑定view以及事件信息。 目前在github上面的开源地址为https://github.com/JakeWharton/butterknife
ButterKnife具有强大的绑定事件和资源文件功能,同时几乎不会影响程序运行效率,使用ButterKnife可以使代码更清晰易读。
如何使用ButterKnife
ButterKnife添加依赖库
- 在dependenise{}中加入库依赖
impelementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
2.在Android Studio中添加插件,(可以自动生成绑定控件的代码)
File -> Settings -> Plugins -> 搜索ButterKnife,找到Android ButterKnife Zeleany进行安装重启AndroidStudio
自动生成绑定代码方式:鼠标放在oncreateView(R.layout.xxx)的xml文件名上,鼠标右键->Generate...->Generate Butterknife Injections
右键->Generate...
选择要生成的注解
认识ButterKnife的注解类型
Butterknife最新的版本中,为我们提供了总共有25个注解。其中分成两类,一个是资源的绑定形式,另外一种就是事件监听的类型
绑定注解,视图,资源,等等,一共13个
名称 | 解析 |
---|---|
@BindViews | 绑定多个view id 为一个view的list变量 @BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<EditText> nameViews; |
@BindView | 绑定一个view id为一个view变量@BindView(R.id.title) TextView title; |
@BindArray | 绑定String中的array数组 @BindArray(R.array.city)String[] citys; |
@BindBitmap | 绑定图片资源文件, @BindBitmap(R.mipmap.wifi) Bitmap bitmap; |
@BindBool | 绑定真假boolean @BindBool(R.bool.boor) |
@BindColor | 绑定颜色 @BindColor(R.color.red) |
@BindDimen | 绑定尺寸 @BindDimen(R.dimen.spacer) Float spacer; |
@BindDrawable | 绑定Drawable @BindDrawable(R.drawable.graphic) Drawable graphic |
@BindFloat | 绑定Float |
@BindInt | 绑定Int |
@BindString | 绑定一个String id为String变量, @BindString(R.string.app_name) String msg |
@BindAnim | 绑定动画 |
@BindFont | 绑定字体文字 |
绑定事件,一共有12个监听事件
名称 | 解析 |
---|---|
@OnClick | 点击事件 |
@OnCheckedChanged | 选中,选中取消 |
@OnEditorAction | 软键盘的功能按键 |
@OnFocusChange | 焦点改变 |
@OnItemClick | Item被点击事件(注意这里有坑,如果item里面有Button等这些有点击的控件事件的,需要设置这些控件属性focusable为false) |
@OnItemLongClick | tem长按,返回真则可以拦截onItemClick |
@OnItemSelected | Item被选择事件 |
@OnLongClick | 长按事件 |
@OnPageChange | 页面改变事件 |
@OnTextChanged | EditText里面的文本变化事件 |
@OnTouch | 触摸事件 |
@Optional | 选择性注入,如果当前对象不存在,就会抛出一个异常,为了压制这个异常,可以在变量或者方法上加入一下注解,让注入变成选择性的,如果目标View存在,则注入, 不存在,则什么事情都不做=如下代码 |
本文参考:
- Butterknife系列一:史上最全的android中Butterknife的使用,不会随时间而改变的叫热爱
网友评论