自作ライブラリ-SurfaceViewで表示するボタンSurfaceViewでボタンを使いたくなった場合、FrameLayoutあたりを使ってButtonを重ね表示して、onClickイベントで処理するということもできますが、自前でSurfaceViewに描画するButtonクラスを作っておくと、いろいろと柔軟に対応できて捗ります。対応する状態に応じた画像を準備します。Buttonクラスはこんな感じで、状態とそれに応じたImageを持っていて描画メソッドでは状態に応じて画像を描画します。}}このクラスをSparseArrayかHashMapあたりに突っ込んで、SurfaceViewのonTouchEventで座標をisPressに流してボタンのイベント処理、描画スレッドでdrawメソッドを呼んでボタンの描画処理を行います。}一度作っておけば、使いやすいよう改変したりしていろんなところで使えるので大変お勧めです。けのモバイル向け機能を完全無償化http://japan.unity3d.com/blog/press/?p=408&preview=trueUnityとはユニティ・テクノロジーズが開発している統合開発環境をもったゲームエンジンで、多様なプラットフォームに対応している。有名どころではけり姫クエストなんかにも採用されています。去年の4月ごろ期間限定の無料キャンペーンをやっていたUnityですが、この時ゲットし損ねたのを悔やんで悶々としておりました。それがついに!完全無償化とはいやはや太っ腹です。これで今までやっていなかった3Dを駆使したアプリなんかにも挑戦してみたいですね。services」が発表されました。ランキングと実績に加えてユーザー同士をマッチングする、マルチプレイの機能も用意とのこと。以前オンラインランキングを考えていて、自分でサーバーを用意するかサービスとして提供しているものを利用するか検討したことがありました。その時出てきたのは大体こんなところ。OpenFeintの代わりに使えそうなサービス一覧OpenFeintというのはモバイルゲーム向けのプラットフォームでオンラインランキングやソーシャル的な要素を組み込むためのサービス。2010年時点で1000万ユーザーを獲得していましたが、2012年末にGREEに買収されてしまいました。http://pankia.com/パンキアは目標を達成することでトロフィーを集める「アチーブメント」、スコアを投稿してランキングをつける「リーダーボード」等を提供しているプラットフォーム。ネットワーク対戦を実装するための簡単なインターフェースもあります。上記のサービス利用にはユーザーのアカウント登録が必要なのが多かったりして、結局どれもまだ利用していませんでしたが、今回Googleからこのようなサービスが出るとなれば利用しない手はないかもしれません。開発2013年5月16日木曜日SurfaceViewでの複数解像度に対応した画面設計Androidでは多様な端末が存在しており、解像度も縦横比も異なるさまざまな画面に対応しなければなりません。これに対処するには用途に応じて画面に対する比率で大きさを決める部分、縦横比を固定する部分、引き伸ばしてもいい部分というように分割して考える必要があります。拙作のFactoryではこのような分割をして画面を設計しました。画面に対して上下を55:45に分けて液晶描画とボタン描画部にとっています。上部分の液晶表示部は横を全体widthの90%としていますが、縦横比は変えたくない部分なので縦はそれに対しての77%にしています。SO-01Bなどでは以下のような実寸になります。L-06Dですが、上下分割の上の部分494pxに対して液晶表示枠の縦が768×0.9.×0.77=532pxになっていてはみ出してしまっています。L-06Dユーザーの方ごめんなさい。某コンテストに出したけど特に何もなく終わったゲームなんですが、個人的にこのゲームはなかなかゲームルールとゲームバランスの調整がよくできたと思ってます。自分で言うなという感じですが...そのままお蔵入りではもったいないので、キャラクターを変えたりして公開することにしました。よかったら遊んでみてください。公開2013年5月2日木曜日setColorとsetAlphaで半透過描画した時の落とし穴こんなのにはまるのは自分だけかもしれませんが、半透過の描画をしようとしてはまってしまったので書いておきます。描画時に透過したい場合setAlphaを使ったりしますが、このときsetColorとの組み合わせに注意しなければなりません。paint);と書いてしまうとこうなります。青い丸が透過していません。alpha)と書いてある通り透過パラメータを含んでます。255)と値が同じなので、Color.BLUEをセットすると透過なしになってしまいます。255))にするとこのように意図したとおりになります。反省会PhotoRouletteを公開してから1ヶ月あまりが経ちました。現在までのダウンロードは以下のような感じ。有効インストールは4/25時点で59、とこれは惨敗といっていい結果です...レビューサイトでの掲載は恐らくミートロイド様での1件のみ。残念でしたと言っても仕様がないので、敗因を探ってみます。アプリの成功要因を需要・品質・インパクト・流行・プロモの5つで自己評価してみました。アプリを使ってもらうためにはまず第1にGooglePlayでアプリを表示してもらうこと、次にアプリの説明、スクリーンショットを見てアプリをインストールしてもらうことの2つ関門があります。GooglePlayで表示してもらうにはPlayのランキングか検索からのいわゆる自然流入とよばれるものと、レビューサイトの紹介、ブログ、twitter、Facebook等のメディア流入、あとは純広告、リワード広告、自社広告からの広告流入などでしょうか。まとめで挙げたのを含め20サイトくらいにレビュー依頼をしました。結果は1件で、残念ながらレビューサイトに載るには需要、インパクト、プロモーションが全然足りなかったと思われます。充実した質の高いアプリの紹介、スクリーンショットや画像、紹介動画の作成など力を入れておくべきでした。そもそもアプリの出来が悪いのでは?という懸念もありますが、1ヶ月で総インストール160という数からして、アプリの出来以前にインストールもしてもらえてないということです。プロモーション不足しているところを反省点にして次に生かしたいところです。PostsAndroidのcanvasに描画したイメージを画像ファイルで保存するアプリの中でcanvasに描画したイメージを画像として保存するという機能を付けたくなることがありますが、こんな感じで簡単に出力できます。まとめAndroidアプリの作成では様々な端末への対応を考慮しなければなりません。現在どのような端末が出てるのか、調査に便利なサイトをまとめてみました。かなりの数の端末が登録されていて国や...同じ構成のレイアウトを別ファイルにしてincludeで使うたまにリストにするような不定数ではないけど、同じようなView構成が続く画面レイアウトがあります。こんなときはまず繰り返す部分のみのxmlファイルを作ります。en...setColorとsetAlphaで半透過描画した時の落とし穴こんなのにはまるのは自分だけかもしれませんが、半透過の描画をしようとしてはまってしまったので書いておきます。組み合わせに注意しなければなりません。position)となっていて文字列では選択できません。これの対応は初回はバックカメラ指定...AndroidでSerializableなクラスを継承したクラスの落とし穴なんかよくわからんタイトルになってしまいましたが、Serializableなクラスを継承したクラスはSerializableをimplementsしなくてもSerializeすることができます。不具合は、リソースのdimen.xmlでdip単位で書いてある値をSurfaceViewのボタンの大きさ指定に使っているのですが、ここで間違った計算をしているのが原因でした。内容を動的に変えようと思ったらあまり情報がなかったので書いておきます。