美文网首页
半天学会Butterknife的简单使用

半天学会Butterknife的简单使用

作者: reaiya | 来源:发表于2018-06-12 18:09 被阅读0次

1. 准备

安装依赖

compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

安装插件
Preferences -> Plugins,搜索Android Butterknife Zelezny,点击install

可能会出现的问题:

  • 提示gradle没有annotationProcessor方法(检查gradle版本,升级到2.2.1+)

2. 使用

2.1 使用插件

在layout资源文件名上面右击,选择Generate -> Generate ButterKnife injections(或者快捷键control+enter),即可选择生成view对应的注解和OnClick

2.2 手动

  1. 绑定view
    @BindView(R.id.main_text1)
    TextView mainText1;
    @BindView(R.id.main_edit1)
    EditText mainEdit1;
    @BindView(R.id.main_button1)
    Button mainButton1;
  1. 点击事件
    @OnClick({R.id.main_text1,R.id.main_edit1,R.id.main_button1})
    public void click(View v) {
        switch (v.getId()){
            case R.id.main_text1:
                mainText1.setText("Text被点击了。。。");
                break;
            case R.id.main_edit1:
                mainText1.setText("Edit被点击了。。。");
                break;
            case R.id.main_button1:
                mainText1.setText("Button被点击了。。。");
                break;
        }
    }
  1. 绑定资源
    @BindString(R.string.title) String title;
    @BindDrawable(R.drawable.graphic) Drawable graphic;
    @BindColor(R.color.red) int red; // int 或 ColorStateList field
    @BindDimen(R.dimen.spacer) Float spacer; // int 或 float
  1. Fragment中的使用
    在Fragment中使用和在Activity中使用,只有一点不一样:在获取View的时候,加多一个view参数把View绑定到ButterKnife就行了。
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_my, container, false);
        unbinder = ButterKnife.bind(this, view);
        return view;
    }

在销毁的时候需要解绑

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }
  1. Adapter ViewHolder中的使用
    static class ViewHolder{
        @BindView(R.id.item_text1)
        TextView itemText1;
        public ViewHolder(View view) {
            ButterKnife.bind(this, view);
        }
    }

3. 注解列表

事件注解

名称 作用
@OnClick 点击事件
@OnCheckedChanged 选中,取消选中
@OnEditorAction 软键盘的功能键
@OnFocusChange 焦点改变
@OnItemClick item被点击(注意这里有坑,如果item里面有Button等这些有点击的控件事件的,需要设置这些控件属性focusable为false)
@OnItemLongClick item长按(返回真可以拦截onItemClick)
@OnItemSelected item被选择事件
@OnLongClick 长按事件
@OnPageChange 页面改变事件
@OnTextChanged EditText里面的文本变化事件
@OnTouch 触摸事件
@Optional 选择性注入,如果当前对象不存在,就会抛出一个异常,为了压制这个异常,可以在变量或者方法上加入一下注解,让注入变成选择性的,如果目标View存在,则注入, 不存在,则什么事情都不做

绑定注解

名称 作用
@BindViews 绑定多个view id为一个view的list变量
@BindView 绑定一个view id为一个view 变量
@BindArray 绑定string里面array数组,@BindArray(R.array.city ) String[] citys ;
@BindBitmap 绑定图片资源为Bitmap,@BindBitmap( R.mipmap.wifi ) Bitmap bitmap;
@BindBool 绑定真假boolean
@BindColor 绑定color,@BindColor(R.color.colorAccent) int black;
@BindDimen 绑定Dimen,@BindDimen(R.dimen.borth_width) int mBorderWidth;
@BindDrawable 绑定Drawable,@BindDrawable(R.drawable.test_pic) Drawable mTestPic;
@BindFloat 绑定float
@BindInt 绑定int
@BindString 绑定一个String id为一个String变量,@BindString( R.string.app_name ) String meg;

写于2018-3-31

相关文章

网友评论

      本文标题:半天学会Butterknife的简单使用

      本文链接:https://www.haomeiwen.com/subject/bxothftx.html