Android开发中经常使用findViewById来获取控件然后进行一些列操作,当控件太多的时候代码就非常臃肿,今天就来学习一个新的开源库ButterKnife,真的可以帮助我们高效,快捷的开发,让我们的代码更加简洁。
使用记录
1.集成
dependencies {
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1
}
2.使用
public class MainActivity extends Activity {
// 绑定view的修饰类型不能是:private 或者 static 。不然的话会报错,想知道什么错误自已试一试!
//绑定单个view
@BindView(R.id.iv_img)
ImageView ivImg;
//绑定多个view
@BindViews({R.id.tv_1, R.id.tv_2, R.id.tv_3})
List<TextView> tvList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定activity
ButterKnife.bind(this);
//给图片设置一张网络图片
Glide.with(this)
.load("http://pic34.photophoto.cn/20150308/0017030549871516_b.jpg")
.transform(new CircleCrop(this))
.into(ivImg);
tvList.get(0).setText("我是第一个");
tvList.get(1).setText("我是第二个");
tvList.get(2).setText("我是第三个");
}
//设置单个控件点击事件
@OnClick(R.id.iv_img)
public void OnClick(View view) {
Toast.makeText(MainActivity.this, "点一下爽一爽", Toast.LENGTH_SHORT).show();
}
//设置长按事件
@OnLongClick(R.id.iv_img)
public boolean OnLongClick() {
Toast.makeText(MainActivity.this, "长按会更爽", Toast.LENGTH_SHORT).show();
return true;
}
//多个控件一起设置点击事件
@OnClick({R.id.tv_1, R.id.tv_2, R.id.tv_3})
public void OnMoreClick(View view) {
switch (view.getId()) {
case R.id.tv_1:
Toast.makeText(MainActivity.this, "爽", Toast.LENGTH_SHORT).show();
break;
case R.id.tv_2:
Toast.makeText(MainActivity.this, "到", Toast.LENGTH_SHORT).show();
break;
case R.id.tv_3:
Toast.makeText(MainActivity.this, "爆", Toast.LENGTH_SHORT).show();
break;
}
}
}
在fragment中使用ButterKnife何在Activity的区别是ButterKnife.bind(this);变成ButterKnife.bind(this,view);并且需要进行解绑操作,代码如下。
public class TestFragment extends Fragment{
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
//这里会有一个返回值(用于进行解绑操作)
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
//调用unbind方法进行解绑
unbinder.unbind();
}
}