浅谈Android神器(ButterKnife)

作者: WilliamIT | 来源:发表于2018-02-23 22:09 被阅读195次
image.png

新年好!祝大家新年大吉大利,家庭美满,事业有成。
主要内容:回顾以及巩固ButterKnife


简介

    在开发过程中,我们总是需要使用findViewById或者是一些点击事件等等。简单的说ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成(偷懒必备)。由大神JakeWharton开源。Github源码地址

优点

1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强

集成

在根build.gradle中,如下:

dependencies {  classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'  }

在主module中加入,如下:

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

重新同步一下就好了。

注意事项

1、Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
2、Fragment ButterKnife.bind(this, mRootView);
3、属性布局不能用private or static 修饰,否则会报错
4、setContentView()不能通过注解实现。
5、在Fragment生命周期中,onDestoryView也需要Butterknife.unbind(this)

如果你的项目需要使用组件化来构建的话,怎么在library中使用butterknife呢。
需要在需要使用的library module的build.gradle中添加:

apply plugin: 'com.jakewharton.butterknife'

引用的地方正常添加:

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

BUT

在根gradle中需要修改classpath,不能使用最新的,例如我使用的是:

classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'

    在8.2.0之前不能使用的原因是library中的R字段的id值不是final类型的,但是你自己的应用module中确是final类型的。
怎么解决的:
    插件的目的是重新创建了一个R文件,改成了final类型。

libeary使用方式改变

    在注解中不能使用R.id。。。需要改成R2.id.
例子:

    @BindView(R2.id.z_custom_text_view)
    TextView zCustomTextView;
    @BindView(R2.id.loading)
    LinearLayout loading;

    不在注解的地方还是需要使用R.id.的。
貌似不能使用swich对比id,需要使用if-else

插件

    有时候使用@BindView还是嫌累怎么办,出来了一个快捷的方式,使用Zelezny插件,帮助开发者一键完成所有xml对象的实例引用。

插件使用

    鼠标移到需要引用的布局文件上,上图是R.layout.activity_setting.,右键选择generate,选择一个带有butterKnife字符的按键,选择需要实例引用的对象。

安装插件
    Setting->Plugins –>搜索Zelezny,点击右侧安装就可以了。

使用总结

参考https://www.jianshu.com/p/2967d0342d80,写的很详细的。

深度讲解

参考https://www.jianshu.com/p/b8b59fb80554,写的很棒。

总结

    我们刚开始不能写出很好的轮子,但是我们要去看好的轮子,吸收经验,增长实力,同时分享好的轮子 .今天写的不多,多看看别人的理解,也许会有意想不到的收获。

谢谢阅读

有错误希望能帮忙纠正,谢谢。

作者:william_zhang

微信公众号: 微信公众号二维码.jpg

欢迎关注!

相关文章

网友评论

  • liu灰1314:关于注意事项的第六点,ButterKnife自从 8.2.0 起已经支持 library 工程。ButterKnife的文档以及sample也有关怎么在library中使用的描述
    WilliamIT:是的是的,感谢能指出文章中的错误,我及时修改。
  • WilliamIT:一点积累,一点收获。

本文标题:浅谈Android神器(ButterKnife)

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