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