Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hello androidannotations

0 views

Published on

  • Be the first to comment

Hello androidannotations

  1. 1. Hello AndroidAnnotations 2013.10.26  名古屋Androidつくる部  LT
  2. 2. •  高木翔一 •  @fly1tkg •  http://b.fly1tkg.com •  最近、勢いでCookie Clicker Camera というアプリをつくりました。(制作時 間3時間くらい)
  3. 3. AndroidAnnotaionsとは? •  Code  Diet   •  AndroidAnnota7onsはAndroidアプリ開発をス ピードアップするためのフレームワークです。   •  このフレームワークが水面下でサポートする ことで開発者は本当に重要なものに集中でき ます。   •  コードをシンプルにすることでメンテナンスを しやすくします   •  h9p://androidannota7ons.org/ より
  4. 4. AndroidAnnotaionsとは? AndroidAnnota7onsをつかってダイエットしましょう  
  5. 5. AndroidAnnotaionsとは? •  現在2.7.1がリリースされている   •  もうすぐ3.0.0がでる   •  いったいどんなことが出来るの?
  6. 6. @ViewById •  Viewメンバ変数にfindViewByIdの結果を入れ といてくれる   •  IDの指定が無ければメンバ変数名から推測し てくれる   // findViewById(R.id.image)の結果を入れてくれます @ViewById ImageView image; // findViewById(R.id.button)の結果を入れてくれます @ViewById(R.id.button) Button mButton;
  7. 7. @Click •  @Clickがついた関数は指定したIDのViewがッ クリックされたときに呼ばれる   •  IDの指定が無ければ関数名から推測してくれ る   @Click void button() { // R.id.buttonが押されたときに呼ばれる } @Click(R.id.okButton) void onOkButtonClick() { // R.id.okButtonが押されたときに呼ばれる }
  8. 8. @Background •  関数をバックグラウンドで実行してくれる   •  Callbackが必要なければ、これで投げっぱな しにするの便利   @Background void backgroundTask() { // 何か時間のかかる処理 }
  9. 9. @UIThread •  関数をUIThreadで実行してくれる   •  Viewの操作とかに便利(UIスレッド以外で操 作すると怒られる)   @UIThread void setImage() { imageView.setImageBitmap(mBitmap) }
  10. 10. AndroidAnnota7onsが使える所 •  @EAc7vity  @EFragment  @EView   @EViewGroup  @EBean  などのアノテーション がついたクラス   @EActivity public class AnnotationsActivity extends Activity { @ViewById ImageView image; }
  11. 11. @EAc7vity •  レイアウトIDを指定することでonCreate時に適 用してくれる   •  @ExtraでIntentExtraつくれる   •  IntentBuilderをつくってくれる   @EActivity(R.layout.activity_main) public class AnnotationsActivity extends Activity { @Extra String id; } new AnnotationsActivity_.IntentBuilder().id(id).start();
  12. 12. 仕組み •  @EAc7vityなどがついたクラスのサブクラスのコードを生成し、そ のクラス内でAnnota7onを元に処理を追加していきます。   •  生成コードは.apt_generatedに入っているので、バグった時とか挙 動がよくわからないときはソースを見ることが出来ます。   @EAc7vity     public  class  Annota7onsAc7vity  extends  Ac7vity  {   } public  class  Annota7onsAc7vity_          extends  Annota7onAc7vity  {   }
  13. 13. 仕組み @UIThread void setImage() { imageView.setImageBitmap(mBitmap) } // 元ソース @Override void setImage() { runOnUiThread(new Runnable() { @Override public void run() { super.setImage(); } } } // AndroidAnnotationsが元ソースを継承して生成したソース
  14. 14. メリット、デメリット •  •  •  •  メリット   コード量が減る(大正義!)   デメリット   Annota7onsを使ったクラスは他のクラスから アンダースコア(_)付で使わなきゃいけない。 (AndroidManifestに登録するAc7vityも_をつ けてください)  
  15. 15. 実力はまだまだこんなものじゃない •  AndroidAnnota7onsはちゃんとかゆい所に手 が届くフレームワークです。学習する価値あり   •  AndroidAnnota7onsのCookBookが参考になり ます   •  h9ps://github.com/excilys/ androidannota7ons/wiki/Cookbook   •  よいAndroid開発ライフを!  

×