ButterKnife 牛油刀使用
一、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 牛油刀使用的更多相关文章
- 关于ButterKnife 8.1.0使用遇到的问题
ButterKnife注解方式 和eventbus 差不多 都很好用 @OnClick(R.id.button) void onButtonClick() { //TODO implement Toa ...
- Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架
前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...
- Android Butterknife 8.4.0 使用方法总结
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6016341.html 本文出自[赵彦军的博客] 前言 ButterKnife 简介 ButterKnife是 ...
- Android开发学习之路-使用annotationProcessor配置Butterknife
Apt工具的作者宣布了不再维护该工具了,而且Android Studio也有了自己的插件,并且可以通过gradle来简单的配置. 其实用Butterknife的都知道,没有apt,onClick绑定不 ...
- Android ButterKnife配置使用
ButterKnife在GitHub的地址:https://github.com/JakeWharton/butterknife 最新的版本是:8.4.0 app 模块的build.gradle: a ...
- Android注解使用之ButterKnife 8.0注解使用介绍
前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...
- ButterKnife Zelezny从配置到使用
插件介绍:ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成.又一神器,完美告别 ...
- Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)
首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile ...
- 使用Android Butterknife
我之前浏览过android butterknife 的使用 在android studio 中,很惊喜,已经成为一个插件来使用 这个android butterknife 最大的用处,就是直接生成la ...
随机推荐
- 《HelloGitHub》第 35 期
<HelloGitHub>第 35 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程. ...
- 企业级Harbor介绍及安装
企业级Harbor介绍及安装 一.Harbor介绍 VMware公司最近开源了企业级Registry项目Harbor,其的目标是帮助用户迅速搭建一个企业级的Docker registry 服务.它以D ...
- Spring学习(一):理解IoC容器
序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...
- DateUtil日期工具类
目录 (1)需要导入的包 (2)DateUtil类 (1)需要导入的包 主要用于Strings.isNullOrEmpty(date) <!--string处理类--> <depen ...
- Java实现简易联网坦克对战小游戏
目录 介绍 本项目的Github地址 基础版本 游戏的原理, 图形界面(非重点) 游戏逻辑 网络联机 客户端连接上服务器 定义应用层协议 TankNewMsg TankMoveMsg MissileN ...
- python3 Flask -day1
window 10 python 3 安装flask 首先打开cmd命令执行窗口切换到Python安装目录的Script,输入pip出现以下页面 这里我们使用virtualenv虚拟开发环境 为什么 ...
- ArcGIS API for JavaScript 4.x 本地部署之IIS法
[导读] 关于如何在默认网站(Default Web Site,物理地址C:\inetpub\wwwroot\)启动,已有很多博客详尽地写好了. 本篇在自建网站(本机)中配置http而非https的j ...
- 免费开源ERP Odoo实施指南 连载一:Odoo概述
Odoo是什么 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适 ...
- Spark学习之路 (一)Spark初识
目录 一.官网介绍 1.什么是Spark 二.Spark的四大特性 1.高效性 2.易用性 3.通用性 4.兼容性 三.Spark的组成 四.应用场景 正文 回到顶部 一.官网介绍 1.什么是Spar ...
- Maven项目pom文件设置JDK版本
maven项目创建之后有时候默认设定了java的低版本,每次导入项目或者更新maven的时候可能或出现一些报错,在pom.xml设定版本免除这个问题 <build> <finalNa ...