1、关于ButterKnife的配置

在Module的gradle中[截止目前版本8.4.0]

annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
compile 'com.android.support:appcompat-v7:24.2.1'

2、关于ButterKnife的注册

调用ButterKnife.bind可以使你在任何地方使用

在activity上使用 ButterKnife.bind(this);

在非activity上使用ButterKnife.bind(this,view);

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view=inflater.inflate(R.layout.activity_main,null,false);
    ButterKnife.bind(this,view);
    return view;
}

3、绑定View控件

/**单个View控件的绑定*/
@BindView(R.id.btn_login)
/**多个控件的绑定可以写在List或者Array中*/
@BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;

4、资源绑定

@BindString(R.string.title) String title;
@BindDrawable(R.drawable.graphic) Drawable graphic;
@BindColor(R.color.red) int red; // int or ColorStateList field
@BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field

5、监听器绑定

监听器可以直接注解到方法上

@OnClick(R.id.submit)
public void submit(View view) {// TODO submit data to server...
}

监听器方法的参数是可选的(监听器是可以带参数的)

@OnClick(R.id.submit)
public void sayHi(Button button) { button.setText("Hello!");
}

多个控件可以绑定同一个监听器

@OnClick({R.id.button,R.id.button2,R.id.button4,R.id.button3})public void onClick(View view){switch (view.getId()){case R.id.button:
            Log.v(LOG,"点击button");
            break;
        case R.id.button2:
            Log.d(LOG,"点击button2");
            break;
        case R.id.button3:
            Log.i(LOG,"点击button3");
            break;
        case R.id.button4:
            Log.w(LOG,"点击button4");
            break;
    }

6、Fragment重置building

Fragment的生命周期不同于Activity,当Butterknife在onCreateView上进行绑定时,需要在onDestroyView上进行解绑,Butterknife.bind()方法提供了一个Unbinder 返回值,在onDestroyView上调用相关的unbinder方法即可

public class FancyFragment extends Fragment {
@BindView(R.id.button1) Button button1;
@BindView(R.id.button2) Button button2;
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container,false); unbinder = ButterKnife.bind(this, view);
// TODO Use fields...
return view;
}
@Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind();
}}

本文大部分例子来自官网,伙伴们可以直接查看
http://jakewharton.github.io/butterknife/

懒人库ButterKnife的应用相关推荐

  1. Android之butterknife(懒人库)

    Android之butterknife(懒人库) 这个开源库可以让我们从大量的findViewById()和setOnclicktListener()解放出来,其对性能的影响微乎其微,其自定义注解的实 ...

  2. Android懒人库

    2019独角兽企业重金招聘Python工程师标准>>> UI NotBoringActionBar NotBoringActionBar教你怎么作出炫酷的ActionBar. 英文教 ...

  3. 懒人必备!只需一行代码,就能导入所有的Python库

    今天给大家介绍一个懒人Python库--Pyforest. 使用一行代码,就能导入所有的Python库(本地已经安装的). GitHub地址:https://github.com/8080labs/p ...

  4. 懒人python操作,代码中永远只需要导入一个库

    Pyforest是一个开源的Python库,可以自动导入代码中使用到的Python库. [阅读全文] 实话说,作为一个程序员还是得不停的学习呀.昨天晚上睡觉之前就在论坛上面溜达了一会儿,发现了有个叫p ...

  5. 懒人神器 !一个创意十足的 Python 命令行工具

    作者 | 写代码的明哥 来源 | Python编程时光 当听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试. 有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带 ...

  6. 一个基于xml的超级orm框架-世界是由懒人创造的。

    这个题目好像有些过了,呵呵,不过,大抵是这样的,因为有懒人的存在,所以才会有世界的进步.从农耕社会开始,人们为了偷懒,而蓄野生动物,如狼牛等为已用,而成为牛狗,再耕地时牛便成为主力.扯得太远了.一时半 ...

  7. MvvmLazy Android懒人框架

    MvvmLazy Android懒人框架(kotlin版) 目前,android流行的MVC.MVP模式的开发框架很多,然而一款基于MVVM模式开发框架却很少. 个人搜寻了市面上大量的开源框架,秉承减 ...

  8. 【论文写作】——懒人怎么进行论文排版?文献引用怎么引?图表题注怎么加?怎么一键更新全文?如何添加目录、图录、表录?

    文章目录 一.排版原则 二.[样式库]的使用 2.1 样式库的作用 2.2 样式库的设置 2.2.1 设置步骤 1.选中需要修改的样式,[右击-修改] 2.设置一个直白点的样式名称 3.核对样式基准, ...

  9. php懒人,关于php懒人函数的详细介绍

    复制代码 代码如下: /* *@自动添加数据函数 *@$table 表名 *@$arr 字段库 array("title",array("content",in ...

最新文章

  1. 广东生态所孙蔚旻团队EST发表利用稳定同位素示踪-宏基因组分箱联用技术揭示砷污染土壤中的厌氧砷氧化微生物及其代谢途径...
  2. vim和NERD树扩展 - 添加文件
  3. Java RMI 框架(远程方法调用)
  4. 【Python】爬虫原理
  5. 【332】Machine Learning
  6. flask-前端-requests之response对应关系 json
  7. Web前端工作笔记009---IE8兼容_new Date兼容方法
  8. C语言异常处理之 setjmp()和longjmp()
  9. python476集免费教材_476. 数字的补数 | python|python爬虫|python入门|python教程
  10. WPF案例 (五) 对控件界面使用倒影
  11. 算法:Validate Binary Search Tree(验证二叉查找树)
  12. OneNote for windows10 微软商店下载UWP版本应用打不开
  13. java doc转mht_Word文档格式doc转为mht.doc
  14. Linux中VI / VIM 常用操作练习
  15. WordPress热门网站主题汇总(长期更新)
  16. 火星来客创业周刊第1期:独立开发者Twitter小工具60天,从月入300美金到月入3000美金
  17. 读《Oracle 数据库应用与实践》
  18. 公众号h5获取手机号权限_微信公众号h5获取用户openId的方法和步骤
  19. 数据库课程设计-员工信息管理系统(基于python和MySQL实现)
  20. 赛门铁克扩展验证EV SSL证书

热门文章

  1. 安卓apk修改(Android反编译apk)
  2. 微信小程序 获取用户昵称 头像 性别...『并解决获取的头像模糊问题』
  3. 【OCM第18期开班】第18期11g OCM培训将于8月23日,晚20点在腾讯课堂开班,第1场考试免费培训!!!...
  4. 系统分析与设计之用例图
  5. ssh和telnet客户软件ZOC如何设置UTF-8
  6. ShowType=0,交换机命令showinterfacestype0/port_#switchport|trunk用于显 - 信管网
  7. (专升本)PowerPnt(幻灯片放映、演示文稿放映)
  8. matlab 黑白格子
  9. 常用、免费的API接口网址
  10. mail163企业邮箱从哪申请,tom企业邮箱怎么样?