## 一.簡介(Introduction):
AndroidAnnotations是一個能夠讓你快速進行Android開發的開源框架,它可以讓我更加專注于業務功能開發。并且使代碼更加精簡,使項目更加容易維護,它的目標就是“Fast Android Development.Easymaintainance”。相信采用清晰意圖且簡單的代碼來實現我們的功能目標。
它的首頁地址是(http://androidannotations.org/)大家如果有興趣可以去官網看一下,并且首頁他們提供了一個例子,進行原生開發以及使用注入框架開發的代碼對比。例子也可以看到代碼比之前幾乎少寫了一半。這樣看來其中一個優點就不言而喻了直接代碼量減少了很多,便于我們項目開發以及維護。項目框架介紹wiki地址:https://github.com/excilys/androidannotations/wiki。項目源代碼Github地址:https://github.com/excilys/androidannotations.。大家都可以去下載下來學習一下。
Robert C. Martin寫到:
Theratio of time spent reading [code] versus writing is well over 10 to 1[therefore] making it easy to read makes it easier to write.
官網這樣寫到:當我們在進行開發Android程序的時候,我們常常在想:為什么我們總是需要一遍又一遍的寫重復的代碼?為什么我們的應用項目越來越難維護?Context,Activity和對象Object,復雜的線程,難以調用的API,加載的匿名listener,大量不需要的casts….難道我們不能改善這些?
基于如下項目開發中遇到的各種各樣的問題,我們可以使用今天我們要講得東西。使用java?annotations,開發者可以更加專注業務功能開發。讓AndroidAnnotations在編譯的時候來生成運行的代碼。
## 二.框架特點(Features):
1、使用依賴注入(Dependency Injection)可以注入views,extras,system service,resource等等
2、簡化的線程模型(Simplified ?threadingmodel) ?,可以進行annotate方法,讓他們在UI線程上執行或在一個后臺線程。
3、事件綁定(Event binding),annotate方法來處理views的事件,這樣我們就不用再寫很多丑陋的匿名監聽器類
4、REST Client??創建一個客戶端接口,AndroidAnnotations生成實現。
5、No Magic ?AndroidAnnotations在編譯的時候會產生一個子類(接下來你會明白),你查看這個子類,可以看到它是如何工作的]
AndroidAnnotations提供了這樣的超強功能,但是整個項目都不超過159KB并且對運行時的性能沒有任何影響。
## 三.官方代碼示例(CodeSample):
朋友你寫得Android代碼容易寫,閱讀和維護嗎?來看一下下面的例子:
~~~
@EActivity(R.layout.translate) // Sets content view toR.layout.translate
public class TranslateActivity extends Activity{
@ViewById // Injects R.id.textInput
EditText textInput;
@ViewById(R.id.myTextView) // Injects R.id.myTextView
TextView result;
@AnimationRes // Injects android.R.anim.fade_in
Animation fadeIn;
@Click //When R.id.doTranslate button is clicked
void doTranslate() {
translateInBackground(textInput.getText().toString());
}
@Background // Executed in a background thread
void translateInBackground(String textToTranslate) {
String translatedText = callGoogleTranslate(textToTranslate);
showResult(translatedText);
}
@UiThread // Executed in the ui thread
void showResult(String translatedText) {
result.setText(translatedText);
result.startAnimation(fadeIn);
}
// [...]
}
~~~
看了以上的例子,對于控件初始化,資源獲取,點擊事件處理,后臺任務處理,線程處理都全部有相關的Annotations,有沒有感覺要實現同樣的功能,以前寫代碼的方式是不是非常的蛋疼,來吧一起跟我來學習Android?Annotations的使用。
## 四.項目配置(Android Studio為例Configuration):
我們這邊采用Android Studio進行項目開發所以這邊講解Grade配置build方法
配置Android-apt
4.1.在項目全局build.grade進行如下配置

4.2.在moudle內部build.grade中進行如下配置
~~~
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
defAAVersion = 'XXX' 這邊填寫版本號,現在AndroidAnnotations的發布版本已經到了3.3.2
dependencies {
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
}
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
// if you have multiple outputs (whenusing splits), you may want to have other index than 0
// you should set your package namehere if you are using different application IDs
// resourcePackageName"your.package.name"
// You can set optional annotationprocessing options here, like these commented options:
// logLevel 'INFO'
// logFile '/var/log/aa.log'
}
}
~~~
? ? ?完成以上的步驟操作,那我們項目的AndroidAnnotations環境就已經配置搭建好了,下一篇我們著重進行將注入框架的基本使用。
本注入框架使用例子會加入到正在開發的框架項目中,可以可以去github站點clone下載
[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)?
同時歡迎大家star和fork整個開源快速開發框架項目~如果有什么意見和反饋,歡迎留言,必定第一時間回復。也歡迎有同樣興趣的童鞋加入到該項目中來,一起維護該項目。
- 前言
- Android快速開發框架介紹(一)
- Android首頁圖片自動無限循環輪播Gallery+FlowIndicator(二)
- Android 列表下拉刷新組件PullToRefreshListView使用(三)
- Android 數據緩存器ACache的詳解和使用(四)
- Android崩潰異常捕捉CustomCrash,提升用戶體驗(五)
- Android實現沉浸式狀態欄(六)
- AndroidAnnnotations注入框架介紹和Android Studios基本配置(七)
- AndroidAnnnotations注入框架的工作原理(八)
- AndroidAnnnotations注入框架使用之注入組件Components(九)
- AndroidAnnnotations注入框架使用之Injection標簽詳解(十)
- AndroidAnnnotations注入框架使用之事件綁定Event Binding(十一)
- AndroidAnnnotations注入框架使用之線程處理Threading(十二)
- AndroidAnnnotations注入框架使用之第三方框架集成RoboGuice(十三)
- AndroidAnnnotations注入框架使用之第三方框架集成Otto事件總線(十四)
- AndroidAnnnotations注入框架使用之第三方框架集成OrmLite(十五)
- AndroidAnnnotations注入框架使用之最佳實踐之Adapters和lists(十六)
- AndroidAnnnotations注入框架使用之最佳實踐SharedPreferences(十七)
- Android MVP開發模式詳解(十九)
- 消息總線EventBus的基本使用(二十)
- 消息總線EventBus源碼分析以及與Otto框架對比(二十一)
- 列表頭生成帶文本或者字母的圖片開源庫TextDrawable使用和詳解(二十二)
- 重寫WebView網頁加載以及JavaScript注入詳解(二十三)
- BaseAdapterHelper的基本使用介紹,讓你擺脫狂寫一堆Adapter煩惱(二十四)
- BaseAdapterHelper詳解源碼分析,讓你擺脫狂寫一堆Adapter煩惱(二十五)
- Volley完全解析之基礎使用(二十六)
- Volley完全解析之進階最佳實踐與二次封裝(二十七)
- RecyclerView完全解析,讓你從此愛上它(二十八)
- RecyclerView完全解析之打造新版類Gallery效果(二十九)
- RecyclerView完全解析之結合AA(Android Annotations)注入框架實例(三十)
- RecyclerView完全解析之下拉刷新與上拉加載SwipeRefreshLayout(三十一)
- CardView完全解析與RecyclerView結合使用(三十二)
- 神器ViewDragHelper完全解析,媽媽再也不擔心我自定義ViewGroup滑動View操作啦~(三十三)
- 神器ViewDragHelper完全解析之詳解實現QQ5.X側滑酷炫效果(三十四)
- 實例解析之SwipeRefreshLayout+RecyclerView+CardView(三十五)
- HorizontalScrollView,Fragment,FragmentStatePagerAdapter打造網易新聞Tab及滑動頁面效果(三十六)
- Android Design支持庫TabLayout打造仿網易新聞Tab標簽效果(三十七)
- 打造QQ6.X最新版本側滑界面效果(三十八)