Android ButterKnife注解框架使用

这段时间学习了下ButterKnife注解框架,学习的不是特别深入,但是基础也差不多了,在此记录总结一下。

  ButterKnife是一个Android View注入的库,主要是注解的使用,可以减少很多代码的书写,使代码结构更加简洁和整齐。ButterKnife可以避免findViewById的调用,android开发的人都知道在Android初始化控件对象的时候要不断地调用findviewById,有多少控件就需要调用多少次,而使用ButterKnife可以省去findViewById的调用,不仅如此还可以省去监听事件的冗长代码,只需要一个注解就可以完成。下面我们来看看ButterKnife到底是如何使用的。

一、如何引入ButterKnife?

1. 首先是在Project的gradle中添加依赖:

1 dependencies {
2         //butterknife的导入
3         classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8‘
4 }

2. 在app的gradle中添加如下: 
在gradle中添加:

1 apply plugin: ‘android-apt‘

在gradle的dependencies中添加:

dependencies {
    compile ‘com.jakewharton:butterknife:8.4.0‘
    apt ‘com.jakewharton:butterknife-compiler:8.4.0‘
}

3. rebuild就完成了。

这里关于Project和app中build.gradle的区别可以参考这篇文章:Android Project和app中两个build.gradle配置的区别

二、如何使用?

注意:button 的修饰类型不能是:private 或者 static 。 否则会报错:错误: @BindView fields must not be private or static. (com.zyj.wifi.ButterknifeActivity.button1)

(一)、View的绑定

1. 控件id的注解:@BindView()

1 @BindView(R.id.toolbar)
2 public Toolbar toolbar;

然后再Activity的onCreate()中调用:

1 ButterKnife.bind( this ) ;

2. 多个控件id 注解: @BindViews()

1     @BindViews({ R.id.button1  , R.id.button2 ,  R.id.button3 })
2     public List<Button> buttonList ;

然后再Activity的onCreate()中调用:

1 ButterKnife.bind( this ) ;

3. 绑定其他View中的控件 
Butter Knife提供了bind的几个重载,只要传入跟布局,便可以在任何对象中使用注解绑定。调用ButterKnife.bind(view. this);方法。但是一般调用 Unbinder unbinder=ButterKnife.bind(view, this)方法之后需要在调用 unbinder.unbind()解绑。 
所以一般在activity中调用之后再绑定其他的view中的控件时我都会使用(四)中的方法。

(二)、资源的绑定

1 <resources>
2     <string name="hello">Hello</string>
3     <string-array name="array">
4         <item>hello</item>
5         <item>hello</item>
6         <item>hello</item>
7         <item>hello</item>
8     </string-array>
9 </resources>

1. @BindString() :绑定string 字符串

1     @BindString(R.string.hello)
2     public String hello;

然后再Activity的onCreate中调用:

1 ButterKnife.bind( this ) ;

2. @BindArray() : 绑定string里面array数组

1     @BindArray(R.array.array)  //绑定string里面array数组
2     String [] array;

然后再Activity的onCreate()中调用:

1 ButterKnife.bind( this ) ;

3. @BindBitmap( ) : 绑定Bitmap 资源

1     @BindBitmap(R.mipmap.ic_launcher)
2     public Bitmap bitmap;

然后再Activity的onCreate()中调用:

1 ButterKnife.bind( this ) ;

6. 其他资源 
绑定BindColor(),BindDimen(),BindDrawable(),BindInt()等都是同样的方法,(1). 绑定资源。 (2).调用ButterKnife.bind()方法。

(三)、事件的绑定

1. 绑定OnClick方法

1     @OnClick(R.id.login_activity_button_login)
2     public void clickLogin() {
3     }

然后再Activity的onCreate()中调用:

1 ButterKnife.bind( this ) ;

如果绑定多个id的话,用“,”逗号隔开。

(四)、其他

Butter Knife提供了一个findViewById的简化代码:findById,用这个方法可以在View、Activity和Dialog中找到想要View,而且,该方法使用的泛型来对返回值进行转换,也就是说,你可以省去findViewById前面的强制转换了。

1 View view = LayoutInflater.from(context).inflate(R.layout.thing, null);
2 TextView firstName = ButterKnife.findById(view, R.id.first_name);

ButterKnife.bind的调用可以被放在任何你想调用findViewById的地方。

时间: 2024-10-16 19:24:14

Android ButterKnife注解框架使用的相关文章

Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny

首先提下ButterKnifey已经更新到版本7.0.0了,现在注解已经不叫@InjectView了,而叫@Bind,感觉更贴合语义.同时注册的方式也从 ButterKnife.inject(this); 变成了 ButterKnife.bind(this); 关于7.0.0的ButterKnife的各种用法和功能,可以参考ButterKnife的github上的主页: http://jakewharton.github.io/butterknife/ 言归正传开始说说Android Butte

Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Z

首先提下ButterKnifey已经更新到版本7.0.1了,现在注解已经不叫@InjectView了,而叫@Bind,感觉更贴合语义.同时注册的方式也从 ButterKnife.inject(this); 变成了 ButterKnife.bind(this); 关于7.0.1的ButterKnife的各种用法和功能,可以参考ButterKnife的github上的主页: http://jakewharton.github.io/butterknife/ 言归正传开始说说Android Butte

Android ButterKnife注入框架

常常听到这么一个口号,叫做“努力做个爱偷懒的程序猿”.显然,Android ButterKnife也在一定程度上帮助了你成为一名偷懒的程序猿.作为Android开发者,你肯定对findViewById(),setOnClickListener(),setOnClickListener()等等非常熟悉,久而久之,是不是厌烦了这些东西,简单没营养,又不得不写,这时候,诸如Android ButterKnife,AndroidAnnotations等开源框架就出现了. ButterKnife新特性:

使用ButterKnife注解框架实现View的点击操作

使用ButterKnife注解式框架可以简化代码的书写,尤其是对一些控件的操作.不再需要findViewById(...),setOnClickListener(...),内部类,实现接口等方法来设置View的监听器.使代码更为简洁高效. Android中的控件统称为View.本案例将会选择Button来简单模拟View被点击的过程.具体实现代码如下: public class MainActivity extends Activity { /** * 在这里变量和xml控件进行了绑定,从某种意

Android Butterknife 注入框架

 简介 ButterKnife是一个专注于Android系统的View注入框架,当一个布局十分复杂时,需要引入执行大量的findViewById代码来找到View的对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeWharton的力作,目前使用很广.最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class.项目集成起来也是特别方便,使用起来也是特别简单. ButterKnife的

Android 自定义注解框架

前言 在我们的项目中,我们几乎天天和一些固定的代码打交道,比如在Activity中你要写findViewById(int)方法来找到控件,然而这样子的代码对于一个稍微有点资格的程序员来说,都是毫无营养的,你根本学不到任何的东西,但是你却必须写.这也就是注解框架的出现,极大的简化了程序员的工作,并且让代码简洁.也许你早就使用过了注解的框架,那么你会自己自己写么?好了,今天就让大家来完成一个注解的框架 阅读的你需要掌握的知识 1.Java反射的知识 2.Java注解的知识 普通的写法 xml布局文件

Android注解框架butterknife基本用法

现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率 然而为什么要使用butterknife?一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响 butterknife现在最新版本是butterknife8,不过开发中还是主要使用butterknife6和butterknife7 butterkn

Android butterknife 实现原理

简介 ButterKnife 是一个 Android 系统的 View 注入框架,能够通过『注解』的方式来绑定 View 的属性或方法. 比如使用它能够减少 findViewById() 的书写,使代码更为简洁明了,同时不消耗额外的性能. 当然这样也有个缺点,就是可读性会差一些,好在 ButterKnife 比较简单,学习难度也不大. 添加依赖 这里以 Android Studio Gradle 为例,为项目添加 ButterKnife,注意两个步骤都要完成: 1. Project 的 buil

Android Butterknife框架

Android Butterknife框架 注解攻略 时间 2014-02-27 09:28:09  Msquirrel原文  http://www.msquirrel.com/?p=95 一.原理. 最近发现一个很好用的开源框架,蛮不错的,可以简化你的代码,是关于注解的.不多说直接进入使用步骤讲解. 二.步骤. 1.准备阶段,先到官网( http://jakewharton.github.io/butterknife/ )上jar包,下载下来. 2.把下载下来的jar包,放到项目的libs下,