ButterKnife 8.4 注解框架的使用

概述

ButterKnife是Android开源世界中应用非常广泛的注解框架。它具有强大的View绑定,Click事件处理功能,而且运行时,不会影响APP效率,实用配置方便。自该库升级到8.0之后,里面一些方法较之前有一些不同,这里将会对它的使用方法重新进行梳理。
gitHub地址:http://jakewharton.github.io/butterknife/
使用详细范例:https://github.com/mengdd/AndroidButterKnifeSample

开始配置

1.在Project级别的 build.gradle 中包含“android-apt”:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’
}
}

2.然后在module级别的build.gradle中,添加依赖:
apply plugin: ‘android-apt’

android {

}

dependencies {
compile ‘com.jakewharton:butterknife:8.4.0’
apt ‘com.jakewharton:butterknife-compiler:8.4.0’
}

常见使用方法

每次都要在Activity中的onCreate绑定Activity,ButterKnife.bind(this);绑定Activity 必须在setContentView之后。同理在fragment中,需要在完成inflate之后即可,ButterKnife.bind(this, view)。

1.绑定View
@BindView(R.id.tv_text)
TextView tvText;
@BindView(R.id.button)
Button button;

2.绑定资源
@BindString(R.string.title)
String title;
@BindDrawable(R.mipmap.ic_launcher)
Drawable graphic;
@BindColor(R.color.colorAccent)
int red;
@BindDimen(R.dimen.spacer)
Float spacer;

3.Adapter ViewHolder 绑定
static class ViewHolder {
@BindView(R.id.title)
TextView name;
@BindView(R.id.job_title)
TextView jobTitle;

public ViewHolder(View view) {
  ButterKnife.bind(this, view);
}

}
4.点击事件的绑定:可以不用声明View,不用setOnClickLisener(),就可以实现点击事件

a.直接绑定一个方法
@OnClick(R.id.tv_text)
void doClick(){
//TODO something
}

b.多个View统一处理同一个点击事件,注意使用大括号区分{};
@OnClick({R.id.tv_text,R.id.button})
void doClick(View view){

    switch (view.getId()){
        case R.id.tv_text:
            Toast.makeText(this,"text",Toast.LENGTH_SHORT).show();
            break;
        case R.id.button:
            Toast.makeText(this,"button",Toast.LENGTH_SHORT).show();
            break;
    }
}

5.对一组Views进行统一操作

a.将View添加到一个list或array中
@BindViews({R.id.tv_text,R.id.button})
List views;

b.设置进行统一处理的接口,重新Aciton,Setter接口
static final ButterKnife.Action DISABLE = new ButterKnife.Action() {
@Override
public void apply(View view, int index) {
view.setEnabled(false);
}
};
static final ButterKnife.Setter

代码混淆

-keep class butterknife.** { *; }  
-dontwarn butterknife.internal.**  
-keep class **$$ViewBinder { *; }  

-keepclasseswithmembernames class * {  
    @butterknife.* <fields>;  
}  

-keepclasseswithmembernames class * {  
    @butterknife.* <methods>;  
}  

使用注意

1.Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind。
2.Fragment ButterKnife.bind(this, mRootView);
3.属性布局不能用private or static 修饰,否则会报错
4.setContentView()不能通过注解实现

Android studio 中ButterKnife插件 Zelezny 应用

在AndroidStudio->File->Settings->Plugins->搜索Zelezny下载添加就行 ,可以快速生成对应组件的实例对象,不用手动写。使用时,在要导入注解的Activity 或 Fragment 或 ViewHolder的layout资源代码上,右键——>Generate——Generate ButterKnife Injections,然后就出现选择框。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值