iPhoneしか使ったことないのびー氏が、Andoridの勉強を始めたらしいよ!!
せっかくなのでログをとりつつがんばります。
1日目はとにかく、ゼロベースからどこまで行けるか。
前提
- Mac OS Lion
- Eclipse未インストール
やったこと
環境構築
-
参考文献発見
android SDKを落としてくる
よくわからんけど、Eclipseっていうものも一緒に落ちてきたので、それを使うことにしてみる
よくわからんけど、SDKと一緒に落としてきたんだから、Eclipseとの連携はできてると判断
SDKのtoolsにパスを通す (.bashrc書き換え)
とりあえずストレージ容量めちゃくちゃ持って行かれたので、手元のファイル整理。
エミュレーターを出そう
- Android Virtual Device Managerより、仮想端末作ってみて起動 → 起動途中で止まる
- なんかAndroid Emulatorってむちゃくちゃ遅いって聞いたことある → 速いやつを導入しよう
- Intel HAXM (Hardware Accelerated Execution Manager)
- それでも遅いきがするけど…とりあえず起動! ヽ(=´▽`=)ノ
- やっぱでも、実機で進めた方が現実的っぽいなー
- あとでログ見たら、HAXMが有効になってなかった説もあるので、また今度調べる
サンプルコードを動かしてみよう
- スケルトンというやつがなかなか見つからなかったり
- Create project from existing sourceから
- 見つからないと思ったらインストールしてなかったり
- なんか気づかないうちに実機で実行してたりして焦ったけど動いた
Logを埋め込んでみて、Activityについてちょっと勉強
- AndroidアプリのコードにおいてActivityはすごく大事らしい
- 要するに、メモリを司ってるものって感じかしら
- frontに出ている状態から、ホーム画面に戻ると
onPause
、再開するとonResume
が発生するらしい - これらは、Android SDKのActivityクラスがもともと備えているメソッドらしい。
- 自作アプリは、このActivityを継承しつつ、この
onPause
とかonResume
とかをoverride & superする感じ。
デバッグ中はDDMSという画面を出しとくといい
- Eclipseと別のアプリケーションとして存在してるみたいだけど、Eclipseのperspectiveというものにも乗っけられる
- エディタとしてはやっぱりEclipse気に喰わないので、基本このDDMSモードで起動しとくのがいいんじゃないかと思った
-
Log.d
の、第1引数はタグ・第2引数がメッセージ-
Log
には他に、エラーログを出すLog.e
とかもあるみたいだけど、この (タグ, メッセージ) のルールは変わらない模様
-
リソース管理について
- 1画面,1アクティビティとする
- 強制終了される前提でリソースを扱う
- アクティビティを跨いでリソースを使用しない
らしい。
Viewをつくる
- [File] -> [New] -> [Android XML File]から、レイアウトを定義するXMLファイルをつくる
- Activityの方のコードの
onCreate
で、setContentView(R.layout.#{レイアウト名})
とすると、そのレイアウトが適用される - 画面遷移するときには、
Intent
というものを介している。(あんまりわかってない)- Intentを通して、画面間でデータをやりとりすることもできる。(
intent.putExtra
,intent.getExtra
)
- Intentを通して、画面間でデータをやりとりすることもできる。(
- どうも
R
は、resource(ディレクトリで言うとres)を指してるっぽい- resに置いたxmlで定義しているモノは、
R
のプロパティからとってくる感じ
- resに置いたxmlで定義しているモノは、
GENYMOTIONとな!?
- 通りすがりの@hilotterさんが GENYMOTION という単語を置いていったのでインストールしてみた
- むっちゃはやいAndroidエミュレーターであった…!
- ちゃんとEclipseとの連携もできた
- ちなみに、Eclipse側のエミュレーターを使う時と違って、GENYMOTIONの端末を起動すると、Eclipse側からその端末は 実機として 認識されるみたい
- こいつを選択してRunすればよい