开源项目学习笔记整理

ButterKnife 2017-08-25

2017-08-25  本文已影响24人  Haraway

传送门:
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类问题的批量解决方案

上一篇下一篇

猜你喜欢

热点阅读