程序员人生 网站导航

android-annotations使用入门

栏目:综合技术时间:2014-12-15 08:39:41

转载请标明出处: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
[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="utf⑻"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.example.hello"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.     <uses-sdk  
  7.         android:minSdkVersion="14"  
  8.         android:targetSdkVersion="18" />  
  9.     <application  
  10.         android:allowBackup="true"  
  11.         android:icon="@drawable/ic_launcher"  
  12.         android:label="@string/app_name">  
  13.         <activity  
  14.             android:name="com.example.hello.MainActivity_"  
  15.             android:label="@string/app_name" >  
  16.             <intent-filter>  
  17.                 <action android:name="android.intent.action.MAIN" />  
  18.                 <category android:name="android.intent.category.LAUNCHER" />  
  19.             </intent-filter>  
  20.         </activity>  
  21.         <activity android:name="com.example.hello.SecondActivity_" />  
  22.     </application>  
  23. </manifest>  
里面定义了两个activity,注意名字后面都带了1个下划线。

2.MainActivity.java:注意这里的名字没有下划线
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. @EActivity(R.layout.activity_main)  
  2. public class MainActivity extends Activity {  
  3.     @ViewById(R.id.myInput)  
  4.     EditText myInput;  
  5.     @ViewById(R.id.myTextView)  
  6.     TextView textView;  
  7.     @ViewById(R.id.myButton2)  
  8.     Button btn2;  
  9.     @StringRes(R.string.go_to_second)  
  10.     String btn2Txt;  
  11.     @AfterViews  
  12.     protected void afterViews(){  
  13.         btn2.setText(btn2Txt);  
  14.     }  
  15.     @Click  
  16.     void myButton() {  
  17.         String name = myInput.getText().toString();  
  18.         textView.setText("Hello " + name);  
  19.     }  
  20.     @Click  
  21.     void myButton2(){  
  22.         SecondActivity_.intent(this).start();  
  23.     }  
  24. }  
  25. activity_main.xml  
  26. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  27.     xmlns:tools="http://schemas.android.com/tools"  
  28.     android:layout_width="match_parent"  
  29.     android:layout_height="match_parent"  
  30.     android:orientation="vertical" >  
  31.     <EditText    
  32.         android:id="@+id/myInput"  
  33.         android:layout_width="fill_parent"   
  34.         android:layout_height="wrap_content"  />  
  35.     <Button    
  36.         android:id="@+id/myButton"  
  37.         android:layout_width="fill_parent"   
  38.         android:layout_height="wrap_content"   
  39.         android:text="Click me!" />          
  40.     <TextView    
  41.         android:id="@+id/myTextView"  
  42.         android:layout_width="fill_parent"   
  43.         android:layout_height="wrap_content" />      
  44.     <Button    
  45.         android:id="@+id/myButton2"  
  46.         android:layout_width="fill_parent"   
  47.         android:layout_height="wrap_content"   
  48.         android:text="@string/go_to_second"/>    
  49. </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版本可以设置编译参数。
[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <plugin>  
  2.     <artifactId>maven-compiler-plugin</artifactId>  
  3.     <version>3.1</version>  
  4.     <configuration>  
  5.         
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐