19:34)周囲の人には「やっとか」と言われましたが、細々と作っていたアプリをリリースしました。見、オセロっぽいボードゲームです。ゲームのルール自体はSPOTというファミコンやゲームボーイ向けに発売されていたものから流用しています。http://pots.linnet.jp/ゲームの詳しい内容は上記の紹介ページを見ていただくとして、少し裏側の話を。OpenGLはちょっと大変そう、SurfaceViewはHTMLのCanvasとほぼAPIが同じという理由でSurfaceViewで作り始めましたが、それでもAPIが生々しいため、ActionScriptっぽく書けるSurfaceViewのラッパークラスから作り始めてしまったため、時間が掛かってしまいました。Androidは画面の解像度のバリエーションが多いため、画像類は極力、ベクターで扱いたいと思ったのもSurfaceViewの選定理由の一つです。SurfaceViewは読み込んだフォントをそのまま表示できるため、最近のウェブサイトで使われるアイコンフォントと同じようにゲーム内で使用するグラフィックをアイコンとしてまとめて読み込んでいます。フォントですので、単色となってしまいますが、キャラクターなどを使用する予定はなかったため、特に気にはなりませんでした。そのため個々のパーツは、画面サイズを基準とした相対値サイズ、座標を指定できています。最終的にはシーン管理やアニメーション機能なども組み込んだフレームワーク的なものになり、ある程度、形になり始めてからはかなり楽になりましたが。今回、作ったフレームワーク的なものは、落ち着いてからコードを整理してgithub辺りにアップしようかと思っています。需要がないのだと思いますが、SurfaceView関連のライブラリをあまり見かけないので。18:22)FontMetricsで取得できるパラメータ類はgetFontMetrics()した時の値を返すので、後で文字サイズを変更すると正しい値が取得できないらしい。以下のコードだと文字サイズが20の場合のパラメータが返ってくる。fontMetrics.ascent);文字サイズを変更した場合は再度、getFontMetrics()する必要があるみたい。19:09)久々にAndroidをいじろうとSDKのアップデートをしたら、過去のプロジェクトもコンパイルできなくなった。(マニフェストのバックアップ関連のパラメータを設定してね)」的なメッセージがあったので、とりあえずfalseに設定したらコンパイル出来た。前に触った時は設定してなくてもコンパイル出来たと思うんだけどな。11:55)Androidアプリを作っていてアルファチャンネルのあるグラデーションを含むビットマップがどうしてもキレイに描画されず(縞々に見える)、しばらく悩んでいた問題が解決したのでメモ。結論から先にまとめるとSurfaceView内でフルカラーを描画したい場合は、SurfaceHolderに色深度を指定する必要があるようです。SurfaceViewを継承したクラスのコンストラクタあたりでgetHolder().setFormat(PixelFormat.RGBA_8888);のように書きます。Androidアプリでビットマップを取り扱う際に色深度を指定できるのですがARGB_8888:アルファチャンネル付き32ビットARGB_4444:アルファチャンネル付き16ビットRGB_565:アルファチャンネル無し16ビットグラデーションの面積が広いグラフィックやクオリティ重視の写真データなどを表示する場合はARGB_8888がマストになると思います。Photoshopなどでノイズを乗せるとキレイに描画されるらしいのですが、画像によっては正しく表示されないようです。「ノイズを乗せる」のは簡易的にディザリングを行うことが目的だと思うのですが、アルファチャンネル付きのグラデーションには効果がありませんでした。http://andante.in/i/android%E3%82%A2%E3%83%97%E3%83%AAtips/%E3%82%B0%E3%83%A9%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E7%B8%9E%E3%81%8C%E5%85%A5%E3%81%A3%E3%81%A6%E7%94%BB%E8%B3%AA%E3%81%8C%E5%8A%A3%E5%8C%96%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B/Androidの色深度についての解説は以下のページが詳しいですが、ビットマップデータを読み込む際にオプションを設定する必要があります。http://www.curious-creature.org/2010/12/08/bitmap-quality-banding-and-dithering/http://d.hatena.ne.jp/Superdry/20101208/1291835054SurfaceViewクラスは描画するエリアに色深度を設定する必要があるため、SurfaceHolderに設定する事になります(Android2.3以降はViewクラスはデフォルトで32ビットカラーらしいのですが)。32ビットカラーのビットマップはメモリの使用量が大きく、描画のフレームレートも落ちるため、多用するとアプリごと落ちることもあるようです。カメラアプリなどはビットマップの取り扱いが難しそうですね。スマートフォン特集」に行ってきたのでメモ。・機能面ではJavaによるアプリ開発と比較すると足かせがある(特にインテント、ウィジェット、ホームスクリーン周り)・速度はそれなりに出るとのこと○iPhone・AndroidアプリのUI・挙動はどこが違う?(石野和明)・バックボタン、メニューボタンが大きな違い。Androidは画面上のボタン数を減らす事が出来る。大介)・ドロイドフォントは「海」、「直」などの文字が微妙に正しくないらしい・ボールド指定は効かない・数字の羅列は電話番号扱いされる上、機種によっては数字が桁数を無視して数字がつながっているだけでも反応するらしい。専用のメタタグを記述して回避する・タップハイライトカラーを指定したAタグ内でトランスフォームすると表示に不具合が出る。