• 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

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

     

     

     

     

     

     

     

     

  • 相关阅读:
    EventBus--介绍
    EventBus--出现的问题
    File存对象--android 的File存储到SD卡();
    SharePrecences--(json+sharePrecences)存list 或对象
    缓存AsimpleCache -- 解决Android中Sharedpreferences无法存储List数据/ASimpleCache
    ViewPager--左右可滑动的
    git之win安装git和环境配置及常用命令总结
    mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
    eclispe---快捷键设置
    bug_ _org.json.JSONException: End of input at character 0 of
  • 原文地址:https://www.cnblogs.com/xqz0618/p/butterknife.html
Copyright © 2020-2023  润新知