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)

 1 buildscript {
 2     repositories {
 3         google()
 4         maven {
 5             name "aliyunmaven"
 6             url "http://maven.aliyun.com/nexus/content/groups/public/"
 7         }        jcenter()
 8     }
 9     dependencies {
10         classpath 'com.android.tools.build:gradle:3.1.0'
11     }
12 }
13 
14 
15 allprojects {
16     repositories {
17         google()
18         maven {
19             name "aliyunmaven"
20             url "http://maven.aliyun.com/nexus/content/groups/public/"
21         }
22         jcenter()
23     }
24 }

 

  

(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

  【注意】一定要将光标,鼠标放在布局上右击,否则无效

  

 

  

 

 

 

 

 

 

 

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-09-14 11:16 小群子0618 阅读(...) 评论(...) 编辑 收藏