ButterKnife的使用

转载请标明出处:
http://blog.csdn.net/mr_lawen/article/details/53096142


ButterKnife的优势

1. 强大的View绑定和onClick事件处理功能
2. 简化代码,提高开发效率

ButterKnife的使用

添加jar包
在Android Studio中的File -> Project Structure -> Dependencies -> Library dependency下,搜索butterknife,这里使用的是8.4.0的版本。

注意:如果是在Library项目中要使用如下步骤,否则找到的View为null.

1. 在根目录下build.gradle文件中添加:

dependencies {
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
  1. 在module下的build.gradle文件中添加:
apply plugin: 'android-apt'
    dependencies {
      apt 'com.jakewharton:butterknife-compiler:8.4.0'
}


常见使用方法

首先要在Activity的onCreate()方法中绑定Activity,通过ButterKnife.bind(this)来绑定,需要注意的是,该语句要放在setContentView()方法之后。同理,在fragment中,需要在inflate之后调用ButterKnife.bind(this, view)方法。另外绑定属性时,不能用private或者static修饰,否则会报错。
绑定View

@BindView(R.id.textView)
TextView textView;
@BindView(R.id.btn)
Button btn;

绑定资源

@BindString(R.string.app_name)
String str;
@BindDrawable(R.mipmap.ic_launcher)
Drawable drawable;
@BindColor(R.color.red)
int color;

点击事件的绑定
可以不用声明View,不用setOnClickLisener(),就可实现点击事件
a. 直接绑定一个方法

@OnClick(R.id.btn)
void doClick() {
    btn.setText("已经点击");
}

b. 多个View统一处理同一个点击事件

@OnClick({R.id.textView,R.id.btn})
void doClick(View view) {
    switch (view.getId()) {
        case R.id.textView:
            textView.setText("点击的是TextView");
            break;
        case R.id.btn:
            btn.setText("点击的是Button");
            break;
    }
}

对一组View进行统一操作
a将一组view添加到集合或数组中

@BindViews({R.id.textView,R.id.btn})
List<View> views;

b. Butterknife的apply方法
可以对指定的集合进行View的批量操作,Action和Setter是ButterKnife的内部接口,示例如下:

ButterKnife.apply(views,new ButterKnife.Action<View>(){

    @Override
    public void apply(@NonNull View view, int index) {
        TextView textView = (TextView) view;
        textView.setText("hello world");
    },”world”
});

ButterKnife.apply(views, new ButterKnife.Setter<View, String>(){

    @Override
    public void set(@NonNull View view, String value, int index) {
        TextView textView = (TextView) view;
view.setText(value);
    }
},"world");


ButterKnife的原理

其本质就是注解加反射,在使用butterKnife的时候进行绑定,其实就是获得注解的对象,之后扫描这个对象的字节码的所有的filed和method,符合我们注解的就保存下来。当符合filed的时候,就给filed通过反射赋值,当符合method的时候,就给method对应的id的view设置监听,之后回调method方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值