#####每次重复写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/