Android项目实战 ButterKnife

Posted 十壹、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android项目实战 ButterKnife相关的知识,希望对你有一定的参考价值。

最近学到了一个实用的工具ButterKnife,可以简化编码,提高编码清晰度,下面会介绍。

ButterKnife

ButterKnife是一个专注于android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以省去这些步骤。使用ButterKnife对性能基本没有损失。下面介绍使用方法。

  1. 在Android Studio项目中配置使用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。

以上是关于Android项目实战 ButterKnife的主要内容,如果未能解决你的问题,请参考以下文章

Android项目实战 ButterKnife

Android 编译时注解-提升-butterknife

Android 编译时注解-提升-butterknife

Android注解神器 ButterKnife框架

修改ButterKnife bug的实战经验

Android 编译时注解-提升