zoukankan      html  css  js  c++  java
  • 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

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

     

     

     

     

     

     

     

     

  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/xqz0618/p/butterknife.html
Copyright © 2011-2022 走看看