Butter Knife使用详解
Butter Knife
Github地址: https://github.com/JakeWharton/butterknife
官方说明给出的解释是 Bind Android views and callbacks to fields and methods.
Field and method binding for Android views which uses annotation processing to generate boilerplate code for you.
- Eliminate
findViewById
calls by using@BindView
on fields. - Group multiple views in a list or array. Operate on all of them at once with actions, setters, or properties.
- Eliminate anonymous inner-classes for listeners by annotating methods with
@OnClick
and others. - Eliminate resource lookups by using resource annotations on fields.
意思就是:将Android视图和回调绑定到字段和方法。
使用注释处理为您生成样板代码的Android视图的字段和方法绑定。
通过在字段上使用@BindView消除findViewById调用。
- 在列表或数组中分组多个视图。 使用操作,设置器或属性一次操作所有这些。
通过使用@OnClick和其他方法注释方法,消除匿名内部类的侦听器。通过在字段上使用资源注释来消除资源查找。
官方文档给出了Butter Knife在Gradle里面如何配置
下面我们就来配置Buffer Knife到工程里面
新建Android Studio工程(作者的Android Studio版本是2.3)
项目主体结构如下:
首先,配置build.gradle(Project:XXX)
新建工程的build.gradle(Project:XXX)初始样子如下:
然后我们按照官方文档进行配置
在repositories {}里面添加
mavenCentral()
在dependencies {}里面添加
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
即:
buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.0' classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }
其次,修改build.gradle(Module:XXX)
新建工程的build.gradle(Module:XXX)初始样子如下:
然后我们按照官方文档进行配置
在开头添加
apply plugin: 'com.jakewharton.butterknife'
在dependencies {} 里面添加
compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
至此,我们的Butter Knife就已经正确的配置到我们的工程里面了。
彩蛋:
做过安卓项目的同学都知道,比如工程里面的get、set 方法,都是通过Generate快速编译的。(说到这里如果你没看懂的话,说明你的Android开发经验太少了,请自行百度查找)
又有同学问了,我在Github上面看到大神们用Butter Knife去编写代码,初始化的时候总是蒙圈。其实 Butter Knife的初衷就是简化代码,让程序员更有效率的开发。
这时候可以利用Android Studio里面的 Plugins来辅助我们开发。
File -> Settings -> Plguins
然后在右面的搜索框里面输入 ButterKnife,然后点击下面的 Search in repositories
就会出现下图的场景:
选择第一个 Android ButterKnife PPlugin Plus 然后点击 Install,重启Android Studio
重启之后,Butter Knife就可以很好的为我们效劳了。
那么Butter Knife如何适用呢?
首先,打开布局文件
Android Studio更新到2.3以后的布局文件初始是这样的
为了做演示,我们稍微修改一下,添加几个控件。
一个EditText,两个Button
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.tnnowu.android.butterknifedemo.MainActivity"> <EditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="50dp" /> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="50dp" /> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="50dp" /> </LinearLayout>
然后,我到Class类里面去用 Butter Knife绑定控件,代替 findViewById
初始Class类文件如下:
在布局文件上面右键,选择Generate
然后选择 Generate Butterknife Injections
这里我们可以看到布局文件中的控件都出现在上面,可以额外选择点击事件OnClick
Confirm之后的场景如下:
package com.tnnowu.android.butterknifedemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class MainActivity extends AppCompatActivity implements View.OnClickListener { @BindView(R.id.edit_text) EditText editText; @BindView(R.id.btn1) Button btn1; @BindView(R.id.btn2) Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick({R.id.btn1, R.id.btn2}) public void onClick(View view) { switch (view.getId()) { case R.id.btn1: break; case R.id.btn2: break; } } }
可以清晰的看到 Butter Knife 已经开始为我们效劳了。
(注意:ButterKnife.bind(this) 是一定要写在onCreate里面)
学会使用 BUffer Knife,可以让程序自动化帮忙减轻工作量!
Butter Knife使用详解的更多相关文章
- android Butter Knife 使用详解
Butter Knife github连接:https://github.com/JakeWharton/butterknife 本文使用的butterknife版本7.0.1 butterknife ...
- ButterKnife的使用详解
ButterKnife的使用详解 1,概述: ButterKnife则是注解中相对简单易懂的很不错的开源框架. ButterKnife是目前常用的一种依托Java注解机制实现辅助代码生成的框架:用到了 ...
- PHP中的闭包详解
PHP闭包(Closure)使用详解 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-02我要评论 本篇文章介绍了,PHP闭包(Closure)的使用介绍,需要的朋友参考下 不知不 ...
- R1(上)—R关联规则分析之Arules包详解
Arules包详解 包基本信息 发布日期:2014-12-07 题目:挖掘关联规则和频繁项集 描述:提供了一个表达.处理.分析事务数据和模式(频繁项集合关联规则)的基本框架. URL:http://R ...
- 详解JMeter函数和变量(转载)
详解JMeter函数和变量(1) JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var ...
- jmeter--函数助手对话框之参数详解
详解JMeter函数和变量 测试人员可以在JMeter的选项菜单中找到函数助手对话框("Function Helper"对话框),如图11-1所示. 图11-1 函数助手(Func ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
随机推荐
- 前端开发在IOS端遇到的一个诡异问题(Delegate 失效)
一.前言 最近同事问到一个问题,一个前端页面在IOS端真机测试下出现一个比较诡异的问题,如果没有遇到过估计也是一筹莫展.今天特此记录一下,或许能帮到后面遇到这个问题的朋友少绕一些弯路.这是关于JQue ...
- 一个想法(续四):IT技术联盟创业众筹进度公示
为了将整个创业过程更加的公开公正透明化,特开此篇用于展示众筹进度. 首轮众筹进度如下:(每天24点更新1次)
- asp.net core mvc剖析:启动流程
asp.net core mvc是微软开源的跨平台的mvc框架,首先它跟原有的MVC相比,最大的不同就是跨平台,然后又增加了一些非常实用的新功能,比如taghelper,viewcomponent,D ...
- sessionstorage,localstorage和cookie之间的区别以及各自的用法
由于年前辞了自己的工作,年后又开始重新找工作,参加了好几次面试,居然都遇到了同样的面试题:sessionstorage,localstorage和cookie之间的是区别? 当然,在面试的时候答的也不 ...
- UIApplication 和 Appdelegate-----iOS
正文 一 UIApplication 1.一个UIApplication代表是一个应用程序,而且是单例的.一个程序也只能有一个UIApplication对象 2.获取UIApplication对象: ...
- DataReader的用法程序简析
// 2015/07/05 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- [css 揭秘]:CSS揭秘 技巧(三):背景定位
我的github地址:https://github.com/FannieGirl/ifannie 源码都在这上面哦! 喜欢的给我一个星吧 背景定位 问题:很多时候,我们想针对容器某个角对背景图片做便宜 ...
- 《JavaScript DOM 编程艺术》
前几天京东买了一本书,在豆瓣上好评如潮,买下了啃一啃,书名<JavaScript DOM 编程艺术>,在好好深造一下javaScript.一边啃,一边敲.当然应该要做好笔记.一些简单的就看 ...
- 转载 JDK + Android-SDK + Python + MonkeyRunner 的安装
转载来自: 小海豚的博客 http://blog.sina.com.cn/u/1295334083 我只是搬运工... JDK + Android-SDK + Python + MonkeyRun ...
- jQuery与CheckBox的值一致就选中
var area = data.area;//area的形式是1,2,3, area = area.substring(1,area.length-1);//1,2,3 var arr = new A ...