#####每次重复写findViewById()让人觉得比较麻烦,使用ButterKnife可以简化这个过程,Butter主要是用了注解来简化代码,用法也比较简单
使用之前要先导入库:
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
绑定View的方式
@BindView(R.id.xx) View view;
设置点击事件的方式
@Onclick(R.id.xx) void xx(){
dosomthing();
}
使用的时候只需要在OnCreate()方法中写入
ButterKnife.bind(this);
绑定资源:
如绑定String
@BindString(R.Sring.xx) String xx;
- 在非Activity中使用:
如在Fragment中,在onCreateView()中调用:
ButterKnife.bind(Context,view);
- 在Adapter中使用:
在ViewHolder中建立一个构造方法:
ViewHolder(View v){
ButterKnife(Context,v);
}
- 绑定任意的对象:
ButterKnife.bind(this,activity);
View列表
@BindViews ({R.id.xx1,R.id.xx2,R.id.xx3}) List<EditText> edittexts;
使用的是ButterKnife.apply(names,DISABLE);
apply()方法允许对所有视图立刻进行处理
Action和Setter接口允许指定简单的行为
static final ButterKnife.Action<View> DISABLE = new ButterKnife.Action<View>() {
@Override public void apply(View view, int index) {
view.setEnabled(false);
}
};
static final ButterKnife.Setter<View, Boolean> ENABLED = new ButterKnife.Setter<View, Boolean>() {
@Override public void set(View view, Boolean value, int index) {
view.setEnabled(value);
}
};
也可以用
ButterKnife.apply(nameViews,View.ALPHA,0.0f);
来更改视图的透明度
指定多个ID的,处理单个的指令的方法
@OnClick({R.id.a,R.id.b})
public void Onclick(Button button){
switch (button.getId()){
case R.id.a:
Toast.makeText(MainActivity.this,"aaa",Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(MainActivity.this,"bbb",Toast.LENGTH_SHORT).show();
break;
}
}
跟直接用Onclick一样就行了
就写这么多吧,这个源码具体怎么实现的现在还不知道,等有时间研究一下吧
最后贴上官方介绍页面:http://jakewharton.github.io/butterknife/