ButterKnife 2017-08-25

作者: Haraway | 来源:发表于2017-08-25 11:14 被阅读24次

    传送门:
    1,github地址:
    https://github.com/JakeWharton/butterknife
    2,官方文档
    http://jakewharton.github.io/butterknife/
    3,其它
    http://www.jianshu.com/p/9ad21e548b69

    一、ButterKnife是什么?

    ButterKnife(黄油刀)是JakeWharton大神开发的一款Android注解框架。这把黄油刀最大的吸引人的地方就是使用注解简化了Android程序编写中的findviewById(id)和setOnxxxListener事件的写法,另外可配合使用ButterKnife Zeleany插件,自动生成注解代码,大大提高编程的效率。

    ButterKnife.png

    二、使用ButterKnife 有好处?

    1.配置简单,方便易用;
    2.使用编译时生成注解方式,低内耗;
    3.简化代码,提升开发效率
    4.方便的处理Adapter里的ViewHolder绑定问题
    5.代码清晰,可读性强

    三、Butter Knife 的特性

    支持 Activity 中的 View 注入
    支持 View 中的 View 注入
    支持 View 事件回调函数注入

    目前支持如下事件回调函数:
    View: @OnLongClick and @OnFocusChanged. *
    TextView:* @OnEditorAction.
    AdapterView: @OnItemClick and @OnItemLongClick.
    CompoundButton: @OnCheckedChanged.

    常用:
    ButterKnife.bind(this); //绑定Activity
    ButterKnife.bind(this,mRootView);//绑定framgent
    @BindView():控件id 注解
    @BindViews():多个控件id 注解
    @BindString() :绑定string 字符串
    @BindArray() : 绑定string里面array数组
    @BindBitmap( ) : 绑定Bitmap 资源
    @BindColor( ) : 绑定一个颜色值
    @Bind() :Adapter ViewHolder 绑定
    @OnClick() :绑定点击事件
    @OnTextChanged(value = R.id.xxx, callback = OnTextChanged.Callback.BEFORE_TEXT_CHANGED)

    四、ButterKnife踩坑记录?
    1,Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
    2,Fragment ButterKnife.bind(this, mRootView);
    3,属性布局不能用private or static 修饰,否则会报错
    4,setContentView()不能通过注解实现。
    5,ButterKnife在library module中使用报错!!这是因为library中的R字段的id值不是final类型的,但是应用module中确是final类型的。
    解决办法是:(1)、用R2代替R BindView;(2)、在click方法中同样使用R2代替R ,但是click方法中找id的时候使用R。
    6,在ViewHolder中使用

        class ViewHolder {
            @BindView(R2.id.report_type)
            TextView reportType;
    
            public ViewHolder(View view) {
                ButterKnife.bind(this, view);
            }
        }
    

    参考资料:
    1, Butterknife全方位解析
    2,分析ButterKnife对性能的影响
    3,ButterKnife的使用以及不能自动生成代码问题的解决
    4, [Android]ButterKnife-无尽之刃-绑定视图控件和事件的快速开发工具
    5,绝对不容错过,ButterKnife使用详谈
    6,解决组件化开发butterknife 在 library中使用的坑
    7,butterknife组件化开发library中R类问题的批量解决方案

    相关文章

      网友评论

        本文标题:ButterKnife 2017-08-25

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