2012年8月13日月曜日

AndroidAnnotations -開始-

今日からはAndroidAnnotationsの使い方を書いていこうと思います。
まず、AndroidAnnotationsって何かというと、
Androidのコーディングをしていると誰でも思うであろう、
「またこのコード書くのか・・・。」とか「内部クラスうぜぇ」とか
「書くこと多いな」とかをアノテーションで解決していこうっていうライブラリです。
AndroiAnnotations

まずはここからzipをDL!
https://github.com/excilys/androidannotations/wiki/Download
解凍すると、以下のファイルがあると思います。

  • androidannotations-xxx-api.jar
  • androidannotations-xxx.jar
    • 「xxx」はバージョン番号です
次からの操作はeclipseで行う想定で。
  1. androidannotations-xxx-api.jarをAndroidProjectのlibsディレクトリに配置。(libsディレクトリがない場合は自分で作成)
  2. 1で追加したandroidannotations-xxx-api.jarをビルドパスに追加。
  3. androidannotations-xxx.jarをAndroidProjectのext-libsディレクトリに配置。(libsディレクトリで無ければ別名でもOK)
  4. AndroidProjectを右クリックして「Properties」→「Java Compiler」→「Annotation Processing」と選択して、「Enable project specific settings」にチェックを入れる。また、「Enable annotation processing」にもチェックを付ける。
  5. AndroidProjectを右クリックして「Properties」→「Java Compiler」→「Annotation Processing」→「Factory Path」と移動して、3で追加したandroidannotations-xxx.jarを追加する。
以上で基本準備は完了。後は普通にコーディングすればOKです。

せっかくなのでサンプルを一つ。
まずは、AndroidAnnotationsを使用しないパターン。
使用するレイアウトは以下の「my_activity.xml」。
  1. &lt?xml version="1.0" encoding="utf-8"?&gt  
  2. &ltLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.  &gt  
  7.     &ltEditText  
  8.      android:id="@+id/myInput"  
  9.      android:layout_width="fill_parent"  
  10.      android:layout_height="wrap_content"  
  11.     /gt  
  12.     &ltButton  
  13.     android:id="@+id/myButton"  
  14.     android:layout_width="fill_parent"  
  15.     android:layout_height="wrap_content"  
  16.     android:text="Click me!"  
  17.     /&gt  
  18.     &ltTextView  
  19.     android:id="@+id/myTextView"  
  20.     android:layout_width="fill_parent"  
  21.     android:layout_height="wrap_content"  
  22.     /&gt  
  23. &lt/LinearLayout&gt  
で、Activity。
  1. public class MyActivity extends Activity {  
  2.   
  3.     protected EditText myInput;  
  4.   
  5.     protected TextView myTextView;  
  6.   
  7.     @Override  
  8.     public void onCreate(final Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.my_activity);  
  11.   
  12.         myInput = (EditText)findViewById(R.id.myInput);  
  13.         myTextView = (TextView)findViewById(R.id.myTextView);  
  14.   
  15.         final Button myButton = (Button)findViewById(R.id.myButton);  
  16.         myButton.setOnClickListener(new OnClickListener() {  
  17.             @Override  
  18.             public void onClick(final View v) {  
  19.                 final String name = myInput.getText().toString();  
  20.                 myTextView.setText("Hello " + name);  
  21.             }  
  22.         );  
  23.     }  
  24. }  
画面には入力欄とボタンが1つずつあって、ボタンをタップすると入力欄に入力された文字列を
加工して別のエリアに表示するだけのプログラムです。
これを、AndroidAnnotationsを使用して書くと、以下のようになります。
使用するレイアウトを同じものでOKです。
  1. @EActivity(R.layout.my_activity)  
  2. public class MyActivity extends Activity {  
  3.   
  4.     @ViewById(R.id.myInput)  
  5.     protected EditText myInput;  
  6.   
  7.     @ViewById(R.id.myTextView)  
  8.     protected TextView myTextView;  
  9.   
  10.     @Click  
  11.     protected void myButton() {  
  12.         final String name = myInput.getText().toString();  
  13.         myTextView.setText("Hello " + name);  
  14.     }  
  15. }  

これだけでOKです。
各アノテーションの説明を。

  • @EActivity
    • Activityクラスの付けるアノテーションです。Activityで使用するレイアウトxmlを指定します。
  • @ViewById
    • フィールドに付けるアノテーションです。指定したidのviewの参照をフィールド変数にセットします。
  • @Click
    • メソッドに付けるアノテーションです。メソッド名とレイアウト内のidを同一にする必要があります。このアノテーションをつけたメソッドは対象のidのviewがクリックされた時の動作になります。
書き忘れていましたが、AndroidAnnotationsを使用するActivityを、
AndroidManifest.xmlに記述する場合は、acticity名を以下のようにする必要があります。
ActivityがMyActivityの場合、android:name=".MyActivity_"とします。
"_"を付けるってことです。

次回から、いろいろ紹介していこうと思います。

0 件のコメント:

コメントを投稿