赞
踩
最近学到了一个实用的工具ButterKnife,可以简化编码,提高编码清晰度,下面会介绍。
ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以省去这些步骤。使用ButterKnife对性能基本没有损失。下面介绍使用方法。
dependencies {
//Butterknife
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
2.实现一定要加入绑定,我这里将其封装在基类中,在基类中实现绑定功能。
基类: BaseActivity
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButterKnife.bind(this);
基类: BaseFragement
/**
* ButterKnife
*/
private Unbinder unbinder;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
unbinder = ButterKnife.bind(this,root);
return root;
}
bind方法返回了一个Unbinder对象,在回调onDestroyView方法时,调用unbind方法释放资源。
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
3.用法
@BindView(R.id.bottomNavigationView)
BottomNavigationView mNavigationView;
@BindView(R.id.view_pager)
ViewPager viewPager;
@BindView(R.id.message)
TextView text_message;
@BindView(R.id.find_add)
ImageView find_add;
@BindView(R.id.message_add)
ImageView message_add;
@BindString,@BindColor,@BindDrawable…绑定资源文件
获取一个字符串资源,需要调用res.getString方法;获取颜色资源,需要调用res.getColor方法;获取图片资源,需要调用res.getDrawable方法。使用ButterKnife框架,分别使用注解@BindString,@BindColor,@BindDrawable替换,注解属性值为资源的id。
@BindString(R.string.app_name)
String app_name;
@BindDrawable(R.drawable.ic_launcher_background)
Drawable d;
@BindColor(R.color.red)
int color_red;
@onClick设置控件的监听
@OnClick({R.id.button, R.id.text1})
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
text1.setTextColor(Color.RED);
break;
case R.id.text1:
text1.setTextColor(Color.BLUE);
break;
default:
break;
}
}
ViewPager事件监听:@OnPageChange
@OnPageChange(R.id.viewpager)
public void onPageSelected(int position) {
switch (position) {
case 0:
break;
case 1:
break;
}
}
当然 ButterKnife是Jake Wharton大神写开源框架。项目托管地址:
https://github.com/JakeWharton/butterknife。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。