深入理解ButterKnife

最近公司使用了自己的框架,爲了提高工作效率,使用了註釋開發。使得程序可讀性和開發效率更快。
其實現原理就是:使用JAVA的反射機制,進行反射動態加載編譯,進而完成findViewById的工作。
但是反射也是有其缺點的就是會降低程序的運行速度。
而且框架雖然使用了註釋編譯,但只是一定程度上降低了開發的工作量,因爲要自己打@BoundView(R.id.id) private View view;
這句話是要自己打的,因爲畢竟是自己開發的註釋,沒有與其相對應的插件,進行CreateLayout這樣只需要簡單點擊幾下就可以自動生成大量代碼的工具。所以我就想,把兩者結合,那不就是最快了嗎?這是一個引子,說道我對這個東西設計的看法。
後來自己聽網課,偶然聽到了Butter Knife 看見了它的實現方式。和我不某而合。
但是這裏也只是解決了生成代碼更快,沒有解決反射帶來的缺陷。所以還是有些不滿意的。直到最近看到這個帖子才發現,黃油刀太帥了。他的實現方式和afinal不同其實現方式是在編譯階段進行代碼生成,這樣即提高了代碼的執行效率,有提高了開發的效率。簡直完美!

那麼這麼好的東西,我們就來研究研究吧。

第一部分使用Butter Knife
1.配置編譯環境
在buildscript{
dependencies {
//添加
classpath’com.neenbedankt,gradle.plugins:android-apt:1.8’
}
}
//添加插件
apply plugin:’com.neenbedankt.android-apt’
//添加依賴
dependencies{
complie’com.neenbedankt,gradle.plugins:android-apt:1.8’
apt ‘com.jakewharton:buttrtknife-compiler:8.1.0’
}

2.配置完成了環境就是在程序中使用了
@Bind(R.id.title) TextView title; //這裏是可以通過alt+insert 完成自動生成代碼功能的。
//上面的是完成View的初始化代碼 下面這句話是完成註冊點擊監聽
@OnClick(R.id.button)
void sayHello(){

}

3.初始化佈局之後,調用bind方法
setContentView(R.layout.layout);
ButterKnife.bind(this);
//注一定要在初始化layout之後調用綁定Layout

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章