当社Webサイト

カテゴリー

Amazonサーチ

  • 08/18
    Google Android, プログラム post by 正木 恵二 @ 2009 年 8 月 18 日 12:00
    このエントリーは下記の記事の続きです。

    アンドロイダー育成日記 -Androidと仲良くなるには- その1

    こんにちは。正木です。

    おまっとさんでございました。
    Google Android向けアプリ作成日記の、続きでございますよ。

    それでは、めしあがれ~。

    (※ 記事中の役立つ凡例 => ◎:役立つ教訓 | ☆:役立つ外部リンク)

    前回まで(~#11)

    ・Google Android向けアプリの開発環境を作った。
    ・雑誌『SoftwareDesign』を見ながら、アプリ作成の『いろは』の『い』を見ていった。
    ・そのほか、コーディングの方法や挙動などを確認した。

    #12

    アプレットの『DroidDraw』が、案外使いづらい、のではないか??

    デザインが思い通りいかない事があるんだ。

    適当なレイアウトのコンテナみたいなLayoutに、適当なViewを包含させると、
    子になっているViewが、マウスでクリックしてもアクティブにならなかったりする(そうなるとViewのプロパティがレイアウト画面から設定できない)。

    Visual Studioで、カスタムコントロールのレイアウトをデザインしてる時に顔を出す、
    あの「いーっとなる」感じを思い出す。
    親コンテナと子コントロールのAnchor プロパティやDockプロパティを適宜設定したけど、
    期待していないサイズ変わり方しよるぞ、コイツ、みたいな。

    …VSのくだりに何の共通点があるかわかんないけど、とにかくめんどくさい。

    「まぁ、ベータ版だしな…」と自分に言い聞かせる。

    #13

    オリジナルアプリの作成を始める事にする。

    まずは設計書…のようなものを作る。

    テキトーな裏紙に、機能とレイアウトの概要を、嵐のような勢いで書けばハイできあがり♪

    (個人的には)面白そうなアプリだと思うのだが…そもそも実現できるのかどうか。

    (アプリの概要は「あとがき」を参照のこと。)

    #14

    なんとなくではあるが、画面レイアウトは構想に近付いてきた。
    一部(たとえばEditTextのBackColorやTextColorプロパティを変えたりとかしたり)の設定を除けば、イイ感じ。たぶん。

    今後の実装にあたり、気付いた点・不安な点を挙げる。

    1. Eclipseの画面レイアウト機能にあるプロパティからでは、ViewのBackColorやTextColorは設定できないのでは?
    2. イメージのリソースは、どこにどうやって持たせるのだ?
    3. おなかへった。
    4. Android端末に、どれだけの負荷をかける事が許されるのか。実機が無くても検証する方法ってないんかな?
    5. 自分が作りたいアプリの仕様的に、問題データを簡単に追加したいのだが…。どうやってもたせようか? ダウンロードとかやっちゃう?
    6. 画面レイアウトを作るのは『DroidDraw』だけではしんどい。そもそも、『DroidDraw』のXMLが表示されるエリアは、あれはエディタではないんだな。よくわからないがカーソルキーが死んでしまう時がある。きっかけもわかんない。いきなりお亡くなりになる。なので、『DroidDraw』だけでなく、Eclipseでのレイアウト機能も併用した方がよい。
    7. おなかへってたけど、コーヒー飲んだからちょっとはマシになったかな。

    ※後日談として、上記の疑問点の見解を書いておく。

    1. 調査せず。今回はソースの中で指定した(ViewのsetTextColorメソッドなどに、android.graphics.Colorクラスの定数を渡す)。
    2. 画像ファイル自体は専用のフォルダに保持。ただ、その画像の参照は「パス指定」でなく「画像に割り振られたint型の定数」でやる。
    3. お昼休憩までがんばりましょう。
    4. これを使えばOKかと。
    5. 結局、今回は対応しなかったのでパス。
    6. (上記の意見に変わりなし)
    7. ごはんはちゃんと食べましょう。

    #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は実装しなかった。)

    勝手にAndroidブログ – PukiWiki

    #24

    並列処理が大事!

    Androidで学ぶ並列処理とGUI – やさしいデスマーチ

    #25

    秒刻みのイベントをフックするのが難しかったので、
    ChronometerとかいうViewのChronometerTickイベントをフックするようにした。

    なんか…違うよなぁ。

    コーディング量は少なくて済んでるし、やりたい事も全部実現できてるんだけど、
    これが最適解だって気がしない。

    でも、今回はこれでいこう。

    あと、クラス変数の宣言の時点で、「(Viewクラス)this.findViewById(R.id…)」を代入するとコケる。
    当然と言えば当然、なのか?
    とにかくVBでも似たようなミスをした憶えがあるので、記念に書き留めておく。

    クロノメーター(Chronometer)を使用するには – 逆引きAndroid入門

    #26

    問題をアプリの外部から追加したいんだけど…無理かなぁ。

    いろいろ考えたけど、何とも難しそうなのでその対応はやめておこう。

    知恵が生まれるほどの知識が蓄えられたら、改めて考えようかしら。

    進捗としては、もうゴールの手前ぐらいまで来ている感じがする。
    「負けないで」が聞こえてもおかしくないぐらいゴールに近い。
    大きなタマネギはすぐそこ。

    なんというか、アプリの雰囲気的に『マジカル頭脳パワー』になってきた。

    …どーせなら、もっと似せようか。

    #27

    ◎TextViewのsetTextメソッドに、数値(intとかlongとか)を渡すと例外が発生する。

    もーちょっとで完成なのに…。

    #28

    ソース中にコメントも入れ終わったし、ひとまず完成!!

    あとがき

    どんなアプリを作ったのかを簡単に書いておこうと思う。

    【イメージ】
    オリジナル第1弾アプリ「Mosaics」

    【概要】

    • 『Mosaics』(モザイクス)というゲームアプリ。
    • 『「何か」が25枚のモザイクによって隠されているので、それを制限時間内に当てる』のが目的。
    • モザイクは数秒おきに1枚ずつはがされていく。残り時間が少なくなると、モザイクの はがれ方も速くなる。
    • 問題がスタートしてから正解するまでが早いほど高得点。得点は100点から減っていき、最低で-50点。
    • 答えがわかれば、回答エリアのすぐ右にある白いボタンを押す。押すと回答モードに入り、タイマーが止まる。ボタンを押さなくても回答は入力できる。
    • 判定ボタンを押すと、入力された回答がチェックされる。正解ならばモザイクが全部はずれて正解用メッセージが表示される。不正解ならばタイマーが再スタート。
    • こたえボタンを押すと問題終了(「制限時間内に正解できなかった」扱いになる)。

    【対応していない事】

    • インターネットを用いた機能(逆に言えば、圏外でもアプリの動作は可能、なはず)
    • 問題の追加(動的な問題データの追加方法が思い浮かばなかった。特にリソースオブジェクト系の追加について)
    • 点数のセーブ(アプリを終了すると通算の獲得得点がクリアされる)
    • コンフィグ機能(最高点、最低点、タイマーの開始値、モザイクがめくれる速度 などの諸々の設定が不可)
    • 国際化、メッセージのプロパティ化
    • 「1000点を取ればミステリーツアーにご招待」とか「正解できないから檻から出られない」みたいなもの

    などなど

    次回予告

    次回は、自作アプリ第2弾の実装開始の場面から綴ります。
    ありがとうございました。

    あわせて読みたい

    Tags: , , , , ,

4 Responses

WP_Cloudy