转载请标明出处:http://write.blog.csdn.net/postedit/41577317
androidannotation是1个非常牛逼的框架(https://github.com/excilys/androidannotations/wiki),可以做到:依赖注入(Dependency Injection),简化的线程模型(Simplified threading model),事件绑定(Event binding),REST Client。
非常好用,更重要的是它对性能无影响!本文我们扼要的来看1下1些入门的东西。
1.从例子开始(参考https://github.com/excilys/androidannotations/wiki/FirstActivity
):
AndroidManifest.xml
-
<?xml version="1.0" encoding="utf⑻"?>
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-
package="com.example.hello"
-
android:versionCode="1"
-
android:versionName="1.0" >
-
<uses-sdk
-
android:minSdkVersion="14"
-
android:targetSdkVersion="18" />
-
<application
-
android:allowBackup="true"
-
android:icon="@drawable/ic_launcher"
-
android:label="@string/app_name">
-
<activity
-
android:name="com.example.hello.MainActivity_"
-
android:label="@string/app_name" >
-
<intent-filter>
-
<action android:name="android.intent.action.MAIN" />
-
<category android:name="android.intent.category.LAUNCHER" />
-
</intent-filter>
-
</activity>
-
<activity android:name="com.example.hello.SecondActivity_" />
-
</application>
-
</manifest>
里面定义了两个activity,注意名字后面都带了1个下划线。
2.MainActivity.java:注意这里的名字没有下划线
-
@EActivity(R.layout.activity_main)
-
public class MainActivity extends Activity {
-
@ViewById(R.id.myInput)
-
EditText myInput;
-
@ViewById(R.id.myTextView)
-
TextView textView;
-
@ViewById(R.id.myButton2)
-
Button btn2;
-
@StringRes(R.string.go_to_second)
-
String btn2Txt;
-
@AfterViews
-
protected void afterViews(){
-
btn2.setText(btn2Txt);
-
}
-
@Click
-
void myButton() {
-
String name = myInput.getText().toString();
-
textView.setText("Hello " + name);
-
}
-
@Click
-
void myButton2(){
-
SecondActivity_.intent(this).start();
-
}
-
}
-
activity_main.xml
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
xmlns:tools="http://schemas.android.com/tools"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent"
-
android:orientation="vertical" >
-
<EditText
-
android:id="@+id/myInput"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content" />
-
<Button
-
android:id="@+id/myButton"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:text="Click me!" />
-
<TextView
-
android:id="@+id/myTextView"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content" />
-
<Button
-
android:id="@+id/myButton2"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:text="@string/go_to_second"/>
-
</LinearLayout>
SecondActivity的源码就不贴了。
使用注入以后,代码看上去变得很简洁,再也没有那1大堆findViewById之类的了。
如何进行编译运行呢(参考https://github.com/excilys/androidannotations/wiki/CustomizeAnnotationProcessing):
(1)如果是使用javac,需要传递-AandroidManifestFile=/path/to/AndroidManifest.xml这个参数,指明Manifest文件。
(2)如果是使用Eclipse,在项目上点击右键->Properties->Java Compiler->Annotation Processing->Enable annotation processing,
然后在Factory Path中添加AndroidAnnotations的jar包。
(3)如果是使用maven,maven-compiler-plugin的3.1版本可以设置编译参数。
-
<plugin>
-
<artifactId>maven-compiler-plugin</artifactId>
-
<version>3.1</version>
-
<configuration>
-
------分隔线----------------------------
------分隔线----------------------------