在Android开发中butterknife是一个很好的对资源初始化的工具,它可以使你的代码简洁通俗易懂,同时配合Android ButterKnife Zelezny插件可以让你写代码的速度提升至少数十倍。 。

单模块化开发使用步骤

第一步

在app底下的build.gradle中添加这两个依赖。

  1. dependencies {
  2. compile 'com.jakewharton:butterknife:8.5.1'
  3. annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
  4. }

第二步

在activity中如使用即可,别忘了在oncreate方法中添加 ButterKnife.bind(this);

  1. class ExampleActivity extends Activity {
  2. @BindView(R2.id.user) EditText username;
  3. @BindView(R2.id.pass) EditText password;
  4. ...
  5. }

一切顺其自然,一般照着做都不会有问题。

多模块化开发使用步骤(ibrary中如何使用butterknife.)

第一步

在全局build.gradle 配置,特别注意版本,

不要使用最新的8.5.1 而应该使用8.4.0,不要问我为什么。

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. mavenCentral()
  5. }
  6. dependencies {
  7. classpath 'com.android.tools.build:gradle:2.2.3'
  8. classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  9. classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
  10. // NOTE: Do not place your application dependencies here; they belong
  11. // in the individual module build.gradle files
  12. }
  13. }

第二步

在library里正常引入butterknife(这里可以使用最新版本8.5.1)。

1、在library中build.gradle中引入插件

  1. apply plugin: 'com.jakewharton.butterknife'

2、 dependencies 中添加依赖

  1. dependencies {
  2. compile 'com.jakewharton:butterknife:8.5.1'
  3. annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
  4. }

到此使用前期工作就算做完了,下面介绍在library中如何使用和注意事项。

butterknife在library activity中的使用和注意事项

1、用R2代替R findviewid

  1. @BindView(R2.id.textView)
  2. TextView textView;
  3. @BindView(R2.id.button1)
  4. Button button1;
  5. @BindView(R2.id.button2)
  6. Button button2;
  7. @BindView(R2.id.button3)
  8. Button button3;
  9. @BindView(R2.id.image)
  10. ImageView image;

2、在click方法中同样使用R2,但是找id的时候使用R。

  1. @OnClick({R2.id.textView, R2.id.button1, R2.id.button2,R2.id.button3, R2.id.image})
  2. public void onViewClicked(View view) {
  3. switch (view.getId()) {
  4. case R.id.textView:
  5. break;
  6. case R.id.button1:
  7.  
  8. break;
  9. case R.id.button2:
  10. break;
  11. case R.id.button3:
  12. break;
  13. case R.id.image:
  14. break;
  15. }
  16. }

3、特别注意library中switch-case的使用,在library中是不能使用switch- case 找id的,解决方法就是用if-else代替。

  1. @OnClick({R2.id.textView, R2.id.button1, R2.id.button2, R2.id.button3, R2.id.image})
  2. public void onViewClicked(View view) {
  3. int i = view.getId();
  4. if (i == R.id.textView) {
  5. } else if (i == R.id.button1) {
  6. } else if (i == R.id.button2) {
  7. } else if (i == R.id.button3) {
  8. } else if (i == R.id.image) {
  9. }
  10. }

注意问题

当library使用R2时候可会报红,没关系,rebuild 就好了

强烈建议大家 用插件 Android ButterKnife Zelezny 生成 然后在library中根据每个地方修改成R2。

关于我

微信公众号:infree6 或者直接扫码

模块化开发之butterknife 在 library中使用的更多相关文章

  1. Asp.net Mvc模块化开发之“开启模块开发、调试的简单愉快之旅”

    整个世界林林种种,把所有的事情都划分为对立的两个面. 每个人都渴望的财富划分为富有和贫穷,身高被划分为高和矮,身材被划分为胖和瘦,等等. 我们总是感叹,有钱人的生活我不懂;有钱人又何尝能懂我们每天起早 ...

  2. Asp.net Mvc模块化开发之“部分版本部分模块更新(上线)”

    项目开发从来就不是一个简单的问题.更难的问题是维护其他人开发的项目,并且要修改bug.如果原系统有重大问题还需要重构. 怎么重构系统不是本文探讨的问题,但是重构后如何上线部署和本文关系密切.这个大家可 ...

  3. ArcGIS Engine开发之旅03--ArcGIS Engine中的控件

    原文:ArcGIS Engine开发之旅03--ArcGIS Engine中的控件 制图控件,如MapControl.PageLayoutControl,其中MapControl控件主要用于地理数据的 ...

  4. ArcGIS Engine开发之旅02--ArcGIS Engine中的类库

    原文:ArcGIS Engine开发之旅02--ArcGIS Engine中的类库 System类库 System类库是ArcGIS体系结构中最底层的类库.System类库包含给构成ArcGIS的其他 ...

  5. iOS开发之MVVM在项目中的应用

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  6. [JS] JS模块化开发之RequireJS

    本节将简述RequireJS常用的功能 RequireJS 实现了 Asynchronous Module API. 目录: 为什么使用RequireJS 加载RequireJS Hello Worl ...

  7. 前端模块化开发之seaJs

    了解后端语言的童鞋一定听过模块化开发的概念,比如java.python等后端语言都有自己的模块化特性,然而和后端语言相比,javascript还尚未实现模块化的功能,虽然之后的更高版本可能引入模块化开 ...

  8. 嵌入式开发之davinci--- 8148/8168/8127 中的图像处理算法优化库vlib

    The Texas Instruments VLIB is an optimizedImage/Video Processing Functions Library for C programmers ...

  9. 嵌入式开发之davinci--- 8148/8168/8127 中的High-DefinitionVideo Processing Subsystem (HDVPSS)

    High-DefinitionVideo Processing Subsystem (HDVPSS) 这一章介绍了高清视频处理子系统(HDVPSS). 2.1导论 2.1.1 简介 HDVPSS 使用 ...

随机推荐

  1. php解析xml文件的方法

    最近一段时间在做模板包导入.模板包中包含有xml文件,,需要解析成给定的php数组格式. 我接触到了两种方法,分别是DOMDocument 方法和 simple_load_file. 个人偏好后一种, ...

  2. quartz开发环境搭建

    进来项目中用到了quartz作为调度框架,在搭建框架的时候添加了一个调度模块,现将代码分享出来,给有需要的朋友参考.这个任务调度可以作为一个单独的模块去开发,所以并不会改变原有的架构,话不多说,直接上 ...

  3. Jupyter Notebook的使用

    命令模式 (按键 Esc 开启) Enter : 转入编辑模式 Shift-Enter : 运行本单元,选中下个单元 Ctrl-Enter : 运行本单元 Alt-Enter : 运行本单元,在其下插 ...

  4. 初识Qt文件下载

    1.新建一个Qt Gui应用,项目名称为http,基类选择为QMainWindow,类名设置为MainWindow. 2.在http.pro文件中的QT  += core gui后添加\ networ ...

  5. Jmeter新手频犯错误之一(登录)

    昨天被人问了一个问题:为什么我用Jmeter先创建一个登录请求,然后创建一个操作(比如计算账单)请求,运行之后结果树中却是status_code=401(即登录失败),我明明登录了啊.... emmm ...

  6. Oracle 索引 详解

    转载:http://www.2cto.com/database/201110/107271.html 一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX ...

  7. 联想ERP项目实施案例分析(10):回到最初再反思IT价值

    联想ERP项目实施案例分析(10):回到最初再反思IT价值 投入上千万(未来每年的维护费也非常高),投入一年实施时间,高级副总裁亲自挂帅,各级业务部门管理者亲自负责.骨干业务人员充当区域IT实施者/推 ...

  8. 学习JavaWeb aop两种配置方式

    aop aop:面向切面编程,它可以解决重复代码. aop有两种方式: 一..xml方式 1.在springmvc-servlet.xml中配置aop,应用bean文件: <!--aop配置-- ...

  9. iOS渐变导航栏封装

    由于最近开发的几个项目都有渐变导航栏,每次写的时候都要copy一堆关于导航渐变相关的代码,显得类很冗余,所以花了点时间封装了一个渐变类,直接继承就可以满足大部分需求啦,这里简单写一下心路历程: 渐变的 ...

  10. jquery animate() Alternate 语法

    前段时间在使用jQuery的animate() 函数时候用到Alternate方式.主要是要让数字自增到指定大小,且能看见数字增加过程. 一般使用如下方式: function autoPlusAnim ...