簡介
AndroidAnnotations是一個利用注解方式來簡化代碼結構,提高開發效率的開源框架。另外,針對REST的使用,框架提供了類似Spring IOC的機制,非常方便。
以下是一個塊簡單的代碼片段:
[java]
@EActivity(R.layout.translate) // Sets content view to R.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);
}
// [...]
}
如何安裝
官網:http://androidannotations.org/
下載地址:https://github.com/excilys/androidannotations/wiki/Download
壓縮包裡包含兩個jar文件:androidannotations-x.x.x.jar和androidannotations-api-x.x.x.jar,另外還有個examples文件夾
androidannotations-x.x.x.jar是用來提供給java的注解處理插件
androidannotations-api-x.x.x.jar是給android工程使用的包
下面用實例裡帶的HelloWorldEclipse演示如何使用
1. 在eclipse裡導入實例工程HelloWorldEclipse
2. 修改HelloWorldEclipse中的lib文件夾為libs,並把androidannotations-api-x.x.x.jar放入目錄,回到Eclipse裡刷新工程,androidannotations-api-x.x.x.jar被自動引入到了build path
3. 新建一個compilers文件夾,將androidannotations-x.x.x.jar拷貝進來待用
4. 打開工程屬性,在Java Build Path-library中的androidannotations-2.6-SNAPSHOT-api.jar刪除
5. 打開過程屬性,在Java compiler-Annotation Processing中啟用Annotation Processing
6. 打開過程屬性,在Java compiler-Annotation Processing-Factory path中,先刪除之前的androidannotations-2.6-SNAPSHOT-api.jar,在把androidannotations-x.x.x.jar(在之前添加的compilers文件夾裡)添加進來
7. Eclipse會提示重新編譯,選擇yes,編譯成功!
如何使用Gradle編譯
官方給的Gradle插件我沒有測試成功,這個編譯腳本是參照了網上的一個腳本寫的
[plain]
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
classpath 'com.googlecode.androidannotations:androidannotations:2.7.1'
classpath 'com.googlecode.androidannotations:androidannotations-api:2.7.1'
}
}
repositories {
mavenCentral()
}
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.squareup.dagger:dagger-compiler:1.0.1'
compile 'com.squareup.dagger:dagger:1.0.1'
compile 'com.squareup:otto:1.3.3'
}
android {
compileSdkVersion 8
buildToolsVersion "19.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
}
configurations {
androidannotations
androidannotations.extendsFrom(compile)
}
dependencies {
androidannotations 'com.googlecode.androidannotations:androidannotations:2.7.1'
compile 'com.googlecode.androidannotations:androidannotations-api:2.7.1'
}
android.applicationVariants.each { variant ->
variant.javaCompile.classpath += configurations.androidannotations
variant.javaCompile.options.compilerArgs += [
'-processor', 'com.googlecode.androidannotations.AndroidAnnotationProcessor',
'-AandroidManifestFile=' + variant.processResources.manifestFile
]
}