一、butterknife介紹 ①官網 butterknife ②Field and method binding for Android Views which uses annotation processing to generate boilerplate code for you 【功能】 ...
一、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
【註意】一定要將游標,滑鼠放在佈局上右擊,否則無效