我所了解的Butterknife

????????簡書第一篇講一下用的很普遍也很多人寫的ButterKnife!

? ??????不管是簡書還是其他博客上都很多人講述過ButterKnife的使用看蚜,這一點證明它確實被很多人喜歡也確實很有用蔼两。本來已經(jīng)足夠多的大神對他的論述了甩鳄,我確實不必在寫這樣的博客了。不過我本來就是菜鳥额划,我從今天開始寫博客是為了將我學(xué)到的東西做一個筆記妙啃,要是有同行看到那肯定是好了,要是能對看到的你有所幫助那更是我的榮慶了俊戳。

????????講述它的使用前先說為什么使用它彬祖?首先它是一個輕量級的框架,什么是輕量級框架品抽,什么是重量級框架呢储笑?我覺得是啟動程序需要的資源決定的,也就是說ButterKnife啟動程序所需的相對是比較少的圆恤,即使用Butterknife不會影響我們APP效率突倍,其次腔稀,大量地使用findViewById等確實是很繁瑣,一個活動(Activity)里的代碼量比較少的時候看上去不覺得有什么羽历,但是當(dāng)你代碼有幾百行的時候你就會發(fā)現(xiàn)代碼真的很臃腫焊虏,看上去很惡心。最后秕磷,ButterKnife不僅可以簡化我們的代碼量诵闭,提高開發(fā)效率,可讀性強澎嚣。

????????使用Butterknife必須得知道它的GitHub地址疏尿,要不然,隨便按照一些博客上的寫法導(dǎo)入易桃,不僅導(dǎo)入的不是最新版的還有可能導(dǎo)入不對或者不完整褥琐,同時還有一點,建議不要直接從Android Stuido的Dependencies導(dǎo)入晤郑,因為這樣導(dǎo)入往往會有bug----無法綁定點擊事件敌呈,這好像是8.4.0以前的問題,現(xiàn)在官網(wǎng)上更新了造寝,大家最好按照GitHub上導(dǎo)入磕洪,GitHub地址為:Butterknife ,我這里也寫一下如何導(dǎo)入:在app 的build.gradle诫龙,記住是app里的build.gradle析显,而不是項目的build.gradle

????????compile 'com.jakewharton:butterknife:8.8.1'

????????annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

? ? ????這是目前最新版的,記住要講annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'不可少赐稽,少了它不是不能用叫榕,而是無法綁定點擊事件,這也是為什么我剛才說不要直接從Android Stuido的Dependencies導(dǎo)入一樣姊舵。


綁定

????????我按照我個人來說晰绎,我喜歡在一個項目里面建一個BaseActivity,讓其他的Activity繼承我的這個BaseActivity括丁,我不是系統(tǒng)在帶的AppCompatActivity荞下,于是我就在我的BaseActivity里OnCreate綁定,一步搞定史飞,輕松尖昏,綁定代碼是ButterKnife.bind(this);

? ? ? ? 當(dāng)然你要是不像我這樣的話,在每一個Activity里的OnCreate綁定也是可以的构资,不可一定要切記抽诉,要在setContentView()后進行綁定,要不然可能會沒有效果吐绵。

? ? ? ? 這里還得講解一些在Fragment里的綁定使用迹淌,畢竟每個項目都有可能使用到Fragment河绽。是在onCreateView里綁定,綁定代碼是:ButterKnife.bind(this,rootView);

基本使用

? ? ? ? 1唉窃、對控件id的綁定耙饰,減少findViewById的使用,這里Activity與Fragment綁定無區(qū)別纹份,下文若是沒有特別提示就是沒有區(qū)別的苟跪,eg:

@BindView(R.id.tv) TextView tv;

@BindView(R.id.bt) Button bt;

@BindView(R.id.iv) ImageView iv;

? ? ? ? 2、對點擊事件的綁定蔓涧,這里是單個控件點擊事件件已。這里的方法命名沒有什么關(guān)系的,你想命名為什么都行蠢笋。

@OnClick(R.id.tv) void onClick(){

? ? ? ? //邏輯代碼

}

? ? ? ? 3拨齐、多個控件的點擊事件,其實和單個控件的點擊事件差不多

@OnClick({ R.id.tv,R.id.bt,R.id.iv}) void onClick(View view){? ? ? ?

? ? ? ? switch(){

? ? ? ? ? ? case R.id.tv:

? ? ? ? ? ? ? ? break:

????????????case R.id.tv:? ? ? ? ? ?

? ????????????? break:

????????????case R.id.tv:? ? ?

? ? ? ? ? ? ? ? ?break:

????????}

}

? ? ? ? 4鳞陨、EditText的事件監(jiān)聽昨寞,可以根據(jù)判斷s,即輸入文字來進行處理

@OnTextChanged(value?=?R.id.EditText,?callback?=?OnTextChanged.Callback.BEFORE_TEXT_CHANGED)??

????????????void?beforeTextChanged(CharSequence?s,?int?start,?int?count,?int?after)?{???

?}?

?@OnTextChanged(value?=?R.id.EditText,?callback?=?OnTextChanged.Callback.TEXT_CHANGED)??

????????????void?onTextChanged(CharSequence?s,?int?start,?int?before,?int?count)?{?

???}??

@OnTextChanged(value?=?R.id.EditText,?callback?=?OnTextChanged.Callback.AFTER_TEXT_CHANGED)??

????????????void?afterTextChanged(Editable?s)?{?

???}??

? ? ? ? Butterknife的使用肯定不會只有這么一點了厦滤,但是由于我的水平有限援岩,我就講那么多了,想要深入了解的看源碼是最有幫助的掏导,Butterknife的GitHub在文章開頭已經(jīng)給出了享怀,結(jié)尾在送上一個Butterknife的兄弟組合Zelezny控件。? ? ??

Zelezny插件的使用

在AndroidStudio->File->Settings->Plugins->搜索Zelezny下載添加就行 趟咆,可以快速生成對應(yīng)組件的實例對象添瓷,不用手動寫。使用時值纱,在要導(dǎo)入注解的Activity 或 Fragment 或 ViewHolder的layout資源代碼上鳞贷,右鍵——>Generate——Generate ButterKnife Injections,然后你會發(fā)現(xiàn)你在layout里的所有id都會被自動給你寫在你的Activity 或 Fragment上虐唠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搀愧,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疆偿,更是在濱河造成了極大的恐慌咱筛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杆故,死亡現(xiàn)場離奇詭異迅箩,居然都是意外死亡,警方通過查閱死者的電腦和手機处铛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門饲趋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叉钥,“玉大人,你說我怎么就攤上這事篙贸⊥抖樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵爵川,是天一觀的道長敷鸦。 經(jīng)常有香客問我,道長寝贡,這世上最難降的妖魔是什么扒披? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮圃泡,結(jié)果婚禮上碟案,老公的妹妹穿的比我還像新娘。我一直安慰自己颇蜡,他們只是感情好价说,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著风秤,像睡著了一般鳖目。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缤弦,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天领迈,我揣著相機與錄音,去河邊找鬼碍沐。 笑死狸捅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的累提。 我是一名探鬼主播尘喝,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刻恭!你這毒婦竟也來了瞧省?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鳍贾,失蹤者是張志新(化名)和其女友劉穎鞍匾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骑科,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡橡淑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咆爽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梁棠。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡置森,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出符糊,到底是詐尸還是另有隱情凫海,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布男娄,位于F島的核電站行贪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏模闲。R本人自食惡果不足惜建瘫,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尸折。 院中可真熱鬧啰脚,春花似錦、人聲如沸实夹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽收擦。三九已至贮配,卻和暖如春谍倦,著一層夾襖步出監(jiān)牢的瞬間塞赂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工昼蛀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宴猾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓叼旋,卻偏偏與公主長得像仇哆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夫植,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容