こんにちは。正木です。
おまっとさんでございました。
Google Android向けアプリ作成日記の、続きでございますよ。
それでは、めしあがれ~。
(※ 記事中の役立つ凡例 => ◎:役立つ教訓 | ☆:役立つ外部リンク)
前回まで(~#11)
・Google Android向けアプリの開発環境を作った。
・雑誌『SoftwareDesign』を見ながら、アプリ作成の『いろは』の『い』を見ていった。
・そのほか、コーディングの方法や挙動などを確認した。
#12
アプレットの『DroidDraw』が、案外使いづらい、のではないか??
デザインが思い通りいかない事があるんだ。
適当なレイアウトのコンテナみたいなLayoutに、適当なViewを包含させると、
子になっているViewが、マウスでクリックしてもアクティブにならなかったりする(そうなるとViewのプロパティがレイアウト画面から設定できない)。
Visual Studioで、カスタムコントロールのレイアウトをデザインしてる時に顔を出す、
あの「いーっとなる」感じを思い出す。
親コンテナと子コントロールのAnchor プロパティやDockプロパティを適宜設定したけど、
期待していないサイズ変わり方しよるぞ、コイツ、みたいな。
…VSのくだりに何の共通点があるかわかんないけど、とにかくめんどくさい。
「まぁ、ベータ版だしな…」と自分に言い聞かせる。
#13
オリジナルアプリの作成を始める事にする。
まずは設計書…のようなものを作る。
テキトーな裏紙に、機能とレイアウトの概要を、嵐のような勢いで書けばハイできあがり♪
(個人的には)面白そうなアプリだと思うのだが…そもそも実現できるのかどうか。
(アプリの概要は「あとがき」を参照のこと。)
#14
なんとなくではあるが、画面レイアウトは構想に近付いてきた。
一部(たとえばEditTextのBackColorやTextColorプロパティを変えたりとかしたり)の設定を除けば、イイ感じ。たぶん。
今後の実装にあたり、気付いた点・不安な点を挙げる。
- Eclipseの画面レイアウト機能にあるプロパティからでは、ViewのBackColorやTextColorは設定できないのでは?
- イメージのリソースは、どこにどうやって持たせるのだ?
- おなかへった。
- Android端末に、どれだけの負荷をかける事が許されるのか。実機が無くても検証する方法ってないんかな?
- 自分が作りたいアプリの仕様的に、問題データを簡単に追加したいのだが…。どうやってもたせようか? ダウンロードとかやっちゃう?
- 画面レイアウトを作るのは『DroidDraw』だけではしんどい。そもそも、『DroidDraw』のXMLが表示されるエリアは、あれはエディタではないんだな。よくわからないがカーソルキーが死んでしまう時がある。きっかけもわかんない。いきなりお亡くなりになる。なので、『DroidDraw』だけでなく、Eclipseでのレイアウト機能も併用した方がよい。
- おなかへってたけど、コーヒー飲んだからちょっとはマシになったかな。
※後日談として、上記の疑問点の見解を書いておく。
- 調査せず。今回はソースの中で指定した(ViewのsetTextColorメソッドなどに、android.graphics.Colorクラスの定数を渡す)。
- 画像ファイル自体は専用のフォルダに保持。ただ、その画像の参照は「パス指定」でなく「画像に割り振られたint型の定数」でやる。
- お昼休憩までがんばりましょう。
- これを使えばOKかと。
- 結局、今回は対応しなかったのでパス。
- (上記の意見に変わりなし)
- ごはんはちゃんと食べましょう。
#15
久しぶりに、食事してて「あきらめ」と「敗北感」を悟った。
自分で大盛りをオーダーしときながら…。
パスタは怖い。もーしばらく要らん。
つべこべ言わず作業再開。
#16
AndroidのスタートアップJavaクラス(src\(任意のパッケージ)\(一番最初に生成されるクラス).java)のonCreateメソッドは、
WicketのJavaクラスのコンストラクタメソッドみたいに、
ボタン押下時に何度も何度も呼び出されることはない。
期待通りでちょっと安心。
#17
各Viewの可視状態は、boolean値でなくint値で設定しなくちゃならん。
(setVisibilityメソッド とかのパラメータのこと。左記メソッドだと、android.view.Viewクラスの定数(int)を渡す必要がある。)
なんというか、わかりづらい…のは固定観念のせいか!?
#18
ねむいでございます。
#19
秒変わりきっかけのイベントもフックできた…が、これでいいのか?
タイマーのスタートはできたけど、
「タイマーをストップしてから、再スタートする」というアクションが、これでは実現できないっぽい。
(※ この時点ではandroid.os.Handlerクラスを用いて実装していた。結局は#25のような実装になったが、Handlerクラスを使っても「タイマーをストップしてから、再スタートする」のは実現可能であると思われる。)
それ以外の疑問(#14で挙げた項目たち)はほとんど解消できた。
ただ新しい疑問も出現したが…それは進捗の証としてヨシとしよう(甘いね)。
あと1日ぐらいで、なんとか使用できるぐらいまでもっていこう。
たかが自己満足のために、
未経験のものに対してここまでコーディングできるものかと、我ながら感心してます。
本日の作業は終了!!
☆5.4 タイマーイベント (Android Docs(初級編))
☆八角研究所 : Android で再開する Java プログラミング(3) – モグラ叩き
☆デジモノ狂想曲!: Android で タイマー処理 を考えてみた
#20
おはようございます。
#21
今日はなんだか手がよく動く。マリオでいうところの「無敵状態」。
#22
無敵状態が終わった。ものの1時間だったですけど。
#23
タイマー制御が難しい。thread.sleepが期待通り動いてくれない。
(※ 後日談だが、thread.sleepは実装しなかった。)
#24
並列処理が大事!
☆Androidで学ぶ並列処理とGUI – やさしいデスマーチ
#25
秒刻みのイベントをフックするのが難しかったので、
ChronometerとかいうViewのChronometerTickイベントをフックするようにした。
なんか…違うよなぁ。
コーディング量は少なくて済んでるし、やりたい事も全部実現できてるんだけど、
これが最適解だって気がしない。
でも、今回はこれでいこう。
あと、クラス変数の宣言の時点で、「(Viewクラス)this.findViewById(R.id…)」を代入するとコケる。
当然と言えば当然、なのか?
とにかくVBでも似たようなミスをした憶えがあるので、記念に書き留めておく。
☆クロノメーター(Chronometer)を使用するには – 逆引きAndroid入門
#26
問題をアプリの外部から追加したいんだけど…無理かなぁ。
いろいろ考えたけど、何とも難しそうなのでその対応はやめておこう。
知恵が生まれるほどの知識が蓄えられたら、改めて考えようかしら。
進捗としては、もうゴールの手前ぐらいまで来ている感じがする。
「負けないで」が聞こえてもおかしくないぐらいゴールに近い。
大きなタマネギはすぐそこ。
なんというか、アプリの雰囲気的に『マジカル頭脳パワー』になってきた。
…どーせなら、もっと似せようか。
#27
◎TextViewのsetTextメソッドに、数値(intとかlongとか)を渡すと例外が発生する。
もーちょっとで完成なのに…。
#28
あとがき
どんなアプリを作ったのかを簡単に書いておこうと思う。
【イメージ】

【概要】
- 『Mosaics』(モザイクス)というゲームアプリ。
- 『「何か」が25枚のモザイクによって隠されているので、それを制限時間内に当てる』のが目的。
- モザイクは数秒おきに1枚ずつはがされていく。残り時間が少なくなると、モザイクの はがれ方も速くなる。
- 問題がスタートしてから正解するまでが早いほど高得点。得点は100点から減っていき、最低で-50点。
- 答えがわかれば、回答エリアのすぐ右にある白いボタンを押す。押すと回答モードに入り、タイマーが止まる。ボタンを押さなくても回答は入力できる。
- 判定ボタンを押すと、入力された回答がチェックされる。正解ならばモザイクが全部はずれて正解用メッセージが表示される。不正解ならばタイマーが再スタート。
- こたえボタンを押すと問題終了(「制限時間内に正解できなかった」扱いになる)。
【対応していない事】
- インターネットを用いた機能(逆に言えば、圏外でもアプリの動作は可能、なはず)
- 問題の追加(動的な問題データの追加方法が思い浮かばなかった。特にリソースオブジェクト系の追加について)
- 点数のセーブ(アプリを終了すると通算の獲得得点がクリアされる)
- コンフィグ機能(最高点、最低点、タイマーの開始値、モザイクがめくれる速度 などの諸々の設定が不可)
- 国際化、メッセージのプロパティ化
- 「1000点を取ればミステリーツアーにご招待」とか「正解できないから檻から出られない」みたいなもの
などなど
次回予告
次回は、自作アプリ第2弾の実装開始の場面から綴ります。
ありがとうございました。
あわせて読みたい
- アンドロイダー育成日記 -Androidと仲良くなるには- その1
- アンドロイダー育成日記 -Androidと仲良くなるには- その2(本記事)
- アンドロイダー育成日記 -Androidと仲良くなるには- その3





8月 18th, 2009 at 12:04
[...] アンドロイダー育成日記 -Androidと仲良くなるには- その2 [...]
8月 20th, 2009 at 10:15
[...] アンドロイダー育成日記 -Androidと仲良くなるには- その2 [...]
8月 20th, 2009 at 14:22
[...] アンドロイダー育成日記 -Androidと仲良くなるには- その2 [...]
9月 8th, 2009 at 12:34
[...] アンドロイダー育成日記 -Androidと仲良くなるには- その2 [...]