1. 程式人生 > >ButterKnife 牛油刀使用

ButterKnife 牛油刀使用

out 沒有 alt 使用 不同 binding ons eat center

一、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

  【註意】一定要將光標,鼠標放在布局上右擊,否則無效

  

  

  

  

ButterKnife 牛油刀使用