Butter Knife注解框架的点点滴滴

Butter Knife这个框架实际上很多人很早就会了,或者说听说了,这里我就不再多赘述了,只是来教一下大家如何去快速上手和使用

一.配置

我们在项目app/build.gradle中添加依赖

implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

二.绑定

要想使用,就必须绑定,这里介绍几种常见的场景

  • 1.Activity
  • 2.Fragment
  • 3.Adapter

在Activity中每次使用都需要bind,所以,我们来写一个基类

public class BaseBindActivity extends AppCompatActivity {

    @Override
    public void setContentView(View view) {
        super.setContentView(view);
        ButterKnife.bind(this);
    }

    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);
        ButterKnife.bind(this);
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
        super.setContentView(view, params);
        ButterKnife.bind(this);
    }
}

这里可以看出,我是重写了setContentView来使用bind,这是因为bind方法一定要在setContentView之后使用

而在Fragment中,我们先来看一份代码

public class TestFragment extends Fragment {

    private Unbinder mUnbinder;

    @Override
    public View onCreateView(LayoutInflater inflater,  ViewGroup container,  Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_test,null);
        mUnbinder = ButterKnife.bind(this,view);
        return view;
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mUnbinder.unbind();
    }
}

因为Fragment的特殊性,所以需要解绑,在bind的时候回返回一个Unbinder对象,通过他,在onDestroyView中解绑即可

如果是adapter中

    class ViewHolder {

        public ViewHolder(View view) {

            ButterKnife.bind(this,view);
        }
    }

三.使用

public class MainActivity extends BaseBindActivity {

    //findViewById
    @BindView(R.id.mTextView)
    TextView mTextView;

    @BindView(R.id.mButton)
    Button mButton;

    @BindString(R.string.app_name)
    String mString;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView.setText(mString);
    }

    //OnClickListener
    @OnClick(R.id.mButton)
    public void clickButton(){
        mTextView.setText("onclick");
    }

    //OnLongClickListener
    @OnLongClick(R.id.mButton)
    public boolean longClickButton(){
        mTextView.setText("long click");
        return true;
    }
}

我这里只是列举一些常用的,比如BindView,就是findViewById,还有点击事件等,这些可以翻阅资料所得

四.插件

一件生成的插件【Android ButterKnife Zelezny】

这里写图片描述

扫描二维码关注公众号,回复: 1892158 查看本文章

案例下载

猜你喜欢

转载自blog.csdn.net/qq_26787115/article/details/80826620