一、butterknife介绍

  ①官网 butterknife

    

  ②Field and method binding for Android Views which uses annotation processing to generate boilerplate code for you

  【功能】(1)绑定字段

    (2)可以绑定组的组件或者数组

    (3)绑定监听器

    (4)绑定资源(图片、字符串、数组)(@BindBool,@BindColor,@BindDimen,@BindDrawable,@BindInt,@BindString)

  ③【提升性能】不是使用反射,而是使用代码生成,生成了bind的delegate方法,在oncreate中调用了bind,其实就是执行了findViewById().性能没有下降。

  ④也可以在fragment和Adapter中使用,以及自定义控件的绑定

  ⑤绑定重置,让程序性能更好,不用同时释放重置。

   ------------------------更多了解可前往官网查看

二、添加依赖,引用插件

  (1)在Project的build.gradle中设置buildScripts,插件依赖

(设置butterknife插件加载的url)

 buildscript {
repositories {
google()
maven {
name "aliyunmaven"
url "http://maven.aliyun.com/nexus/content/groups/public/"
} jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.0'
}
} allprojects {
repositories {
google()
maven {
name "aliyunmaven"
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
jcenter()
}
}

  

(2)Module依赖设置的build.gradle中设置:

  implementation 'com.jakewharton:butterknife:8.8.1'

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

   也可通过以下方式搜索加入

  

三、项目使用

  (1)绑定字段

  

  

  

(2)绑定资源

  【项目结构】

  

  【strings.xml】

  

  【activity_main.xml】

  

  【MainActivity.java】

  

  【效果】

    

(3)fragment中使用butterknife

  【项目结构】

    

  【fragment_fancy.xml】

  

  【FancyFragment.java】

    【注意】使用的是ButterKnife.Bind(this,view);和Activity中不同

  

  【效果】将fragment贴到activity上,最终效果

  

(4)在Adapter中使用butterknife(以下只粘贴重要代码)

  【项目结构】

  

  【item.xml】

  

  【MyHolder.java】

  

  【MyAdapter.java】

  

  

  【注意】创建MyHolder是需要传入view参数。此处使用RecycleView,和ListView的BaseAdapter有点差异,但用过的也会很好理解。

  【最终效果】

  

(5)绑定一组View

  例如,多个TextView一起绑定到一个List集合中。

  使用的注解是@bindViews({x,y,z})--->List<view>

  【activity_main.xml】

   

  【MainActivity.java】 

  

  【效果】

   

(6)绑定监听器onclick事件

  【核心代码】

  

(7)自定义控件的绑定

  

  【activity_main.xml】

   

  【MainActivity.java】不变。

  【效果】

  

(8)绑定重置(.unbind)

  目的,让程序性能更好,不用时释放绑定。

【案例】在Fragment中实现绑定重置

【项目结构】

  

  【fragment_red.xml】

  

  【fragment_blue.xml】

  

  【RedFragment.java】

  

  

  【BlueFragment.java】

  

  【最终效果】

  

四、添加插件,快速获取布局中的id,自动生成ViewHolder

 ①打开file---》setting--》plugins--》Brows···--》搜索butterknife---》带五星的安装---》安装成功重启as生效

    

  ②将鼠标点击在R.layout.某某布局上,右击---》Generate···--》点击会看到---》Generate ButterKnife Injections

  【注意】一定要将光标,鼠标放在布局上右击,否则无效

 

ButterKnife 牛油刀使用的更多相关文章

  1. 关于ButterKnife 8.1.0使用遇到的问题

    ButterKnife注解方式 和eventbus 差不多 都很好用 @OnClick(R.id.button) void onButtonClick() { //TODO implement Toa ...

  2. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  3. Android Butterknife 8.4.0 使用方法总结

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6016341.html 本文出自[赵彦军的博客] 前言 ButterKnife 简介 ButterKnife是 ...

  4. Android开发学习之路-使用annotationProcessor配置Butterknife

    Apt工具的作者宣布了不再维护该工具了,而且Android Studio也有了自己的插件,并且可以通过gradle来简单的配置. 其实用Butterknife的都知道,没有apt,onClick绑定不 ...

  5. Android ButterKnife配置使用

    ButterKnife在GitHub的地址:https://github.com/JakeWharton/butterknife 最新的版本是:8.4.0 app 模块的build.gradle: a ...

  6. Android注解使用之ButterKnife 8.0注解使用介绍

    前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...

  7. ButterKnife Zelezny从配置到使用

    插件介绍:ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成.又一神器,完美告别 ...

  8. Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)

    首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile ...

  9. 使用Android Butterknife

    我之前浏览过android butterknife 的使用 在android studio 中,很惊喜,已经成为一个插件来使用 这个android butterknife 最大的用处,就是直接生成la ...

随机推荐

  1. 【Python3爬虫】常见反爬虫措施及解决办法(二)

    这一篇博客,还是接着说那些常见的反爬虫措施以及我们的解决办法.同样的,如果对你有帮助的话,麻烦点一下推荐啦. 一.防盗链 这次我遇到的防盗链,除了前面说的Referer防盗链,还有Cookie防盗链和 ...

  2. xss攻击和csrf攻击的定义及区别

    1.CSRF的基本概念.缩写.全称 CSRF(Cross-site request forgery):跨站请求伪造. PS:中文名一定要记住.英文全称,如果记不住也拉倒. 2.CSRF的攻击原理 用户 ...

  3. asp.net Core 中AuthorizationHandler 实现自定义授权

    前言 ASP.NET Core 中 继承的是AuthorizationHandler ,而ASP.NET Framework 中继承的是AuthorizeAttribute. 它们都是用过重写里面的方 ...

  4. [ArcGIS API for JavaScript 4.8] Sample Code-Popups-1-popupTemplate的概念和popup中属性字段值的多种表现形式

    [官方文档:https://developers.arcgis.com/javascript/latest/sample-code/intro-popuptemplate/index.html] 一. ...

  5. Windows Server 2016-命令行方式管理Windows服务

    Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序. 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显 ...

  6. CF592D Super M

    嘟嘟嘟 首先这题虽然不是很难,但是黄题是不是有点过分了--好歹算个蓝题啊. 手玩样例得知,这哥们儿瞬移到的城市\(A\)一定是这些被攻击的城市构成的树的一个叶子,然后他经过的最后一个城市\(B\)和\ ...

  7. 第二章.python入门

    2.1环境的安装 解释器:py2和py3 添加环境变量的作用:便于找到python解释器 开发工具:pycharm 2.2编码 2.2.1编码基础 ascii:只表示英文,8位表示一个元素,pytho ...

  8. CSS3D 转换调试

    css3d 测试工具 效果如图: 代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <me ...

  9. 微信小程序开发之多图片上传+服务端接收

    前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...

  10. Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!

    目录 01 简介 02 tcpdump 命令选项 03 过滤器 04 常用操作 4.1 抓取某主机的数据包 4.2 抓取某端口的数据包 4.3 抓取某网络(网段)的数据包 4.4 抓取某协议的数据包 ...