ヽ|∵|ゝ(Fantom) の 開発blog? ホーム »グラフィックス
このページの記事一覧

【Android】【Java】Bitmap.getConfig() がなぜか null になる  


 う~ん、どうもこの問題は海外サイトまで調べたけど、いまいち原因は書かれてないな…。

 私が実験していたのは、他者のライブラリで画像も適当なサンプルを使っていたので、画像フォーマットの問題なのかと思ったのだが、同じ条件で新しく作った画像でも、片方は上手くいって、片方は null が返ってきたりする…。なんじゃこりゃ。

 というわけで、あまりいい対処法は見つからなかった。無理矢理やるなら、try~catch で 囲って、エラーが出たら、Config.ARGB_8888 でやるしかないのかもね。Android のバージョンにもよるみたいなことも書いてあったが、詳細は不明。

 例えば、

Bitmap image1, image2;
try {
image1 = BitmapFactory.decodeResource(getResources(), drawableID);
image2 = image1.copy(image1.getConfig(), isMutable); //getConfig() = null になることがある
} catch (Exception e) {
image2 = image1.copy(Config.ARGB_8888, isMutable); //こっちなら大丈夫
}

みたいな感じに。

 Bitmap.createBitmap(w, h, image.getConfig()) みたいなコードもね。取得できないことがたまにあるので、エラーが出る。使わない方が無難かな…。


スポンサーサイト

category: Android

thread: プログラミング

janre: コンピュータ

tag: グラフィックス  トラブルシューティング 
tb: 0   cm: --

自作ダイアログを実装してみるとこんな感じ?  


 とりあえずデザインはシンプルだが、カスタマイズはいつでもできるように作ってあるので、自作の確認ダイアログ、選択肢ウィンドウ、履歴ウィンドウを実装してみる。


Android エミュレータ

 うむ、こんなもんかな。選択肢は吉里吉里仕様の [link] タグではなくて、独自仕様にしてしまったが(メッセージウィンドウ内では小さすぎて選択しずらいため)、スマホの画面なら仕方ないかな。基本的に選択機能はシナリオジャンプ仕様だけど、独自に変数に値を記録できる機能を付け加えるのもいいかな。さすがに TJS 式までは入れるつもりはないので、もっと簡単なタグ仕様で実現すれば良い。値をシナリオからメイン読み込んでアプリに渡す機能は付けてあるから、選択肢によって別々のステージに切り替えたりもできるね。

 さて、ほんのオマケ的に ADV パートを付け加える機能を作ってみたが、かなり本格的になってしまった。データのロード・セーブ機能を付け加えれば、そのままアドベンチャーゲームになるね。

 またサンプルを作ってみるかな。でも画像素材から自分でいじってるので、また時間がかかるな・・・。やはりゲームはプログラマーとデザイナーの最低2人で分担しないと、結構キツイね。サークルでも作りたい気分。メンバー募集(笑)。ちなみに BGM や SE も再生できる。つまり簡単なサウンドノベルなら、もう既にこのシステムで作れるクオリティになってしまった(笑)。

 現時点ではスマホもメモリや通信などの制限で PC 並の容量は無理だろうが、10年後くらいには当たり前になってるんだろうな。4GByte くらいのスマホアプリとか(笑)。まぁ、今のところは小さいアプリをシリーズで出すのもアリかな。


※シナリオ:月華夜奏さん
※キャラクター画像は「著作権フリー立ちキャラクター素材集」を使用しています。
※背景画像は「きまぐれアフター」「ぐったりにゃんこ」のフリー素材を使用しています。

著作権フリーキャラクター素材集


category: ゲーム

thread: ゲーム開発

janre: コンピュータ

tag: グラフィックス 
tb: 0   cm: --

【Android】【Java】Paint で斜体文字(≒italic) の Canvas 描画  



 どうも Typeface.ITALIC が上手く行かなかったので調べてみたら、どうやらこの定数が使えるのは API10 以降らしい?今は API8(Android2.2 対応)でコンパイルしてるので、何か方法は無いかな~、と調べてみたら、文字列の傾斜が設定できる Paint メソッドがあった。そういえばこれ使った事なかったな・・・。大抵どんな言語でも、フォント斜体:italic = true、太字:bold = true が定番だからね。でも、自分で傾斜を決められるのも良いかもね。

 とりあえずいつものように実験。

Paint p = new Paint();
p.setTextSkewX(-0.25f); //傾斜
p.setFakeBoldText(true); //日本語も太字
・・・
canvas.drawText("italic?", 0, 0, p); //onDraw() などで

 ちなみに、setTextSkewX(0) にすれば、真っ直ぐに戻る。

 また、日本語は setFakeBoldText() でないと上手く太字にならないんだよね。

 ゲームってグラフィクスメソッドを自由に使いこなせるに越したことないからね。これ使えば、文字がユラユラ揺れるアニメーションとか簡単に作れるね(笑)。


(関連記事)
【Android】FontMetrics 図解


category: Android

thread: プログラミング

janre: コンピュータ

tag: グラフィックス 
tb: 0   cm: --

トランジションルール画像の自動生成を移植  



Android版トランジションルール画像自動生成

 意外とアッサリ移植できてしまった(笑)。ライブラリとして作ったので、他のゲームにも使えそう。

 ただ、ペイントソフト(PhotoShopとか)などから比べると、モアレ(縞模様)が結構出るので、多少汚いね。でも画面効果として使う分には問題なさそう。それに、画像圧縮の仕様として、同じ色や近似色が並ぶような絵柄はファイルサイズ小さくなるので良いのだけれど、ノイズっぽいのとか、パターン性があまりない画像は圧縮が効かないので、動的に生成して、ファイルを使用しなくて良いのは、随分とファイルサイズを削減できる。


トランジションルール画像同士を合成

 また、ついでにトランジションルール画像同士を合成する機能も付けておいた。例えば、横線のルール画像と右から左へのグラデーション画像をミックスして、線の入ったグラデーションを生成する。すると移動シーンのエフェクトみたいなものが簡単に作れるわけだ。


使用例

 試しに使ってみたけど、少々グラデーションの粗さはあるが、演出としては全く問題ない。これなら組み合わせ次第で色々作れるし、バリエーションにも困らない。それでもってファイルサイズ0。うん、良い仕事をしてくれる(笑)。

 キャラや背景画像はなかなか減らせないからね。こういった工夫も良いかも。実はプログラムよりも画像や音素材の方が何百倍も大きいんだよね。1つ減らせるだけで、どれだけ助かるか・・・。

[Rule Generator Demo]
Applet 版のサンプル(PC[IE]でアクセス)
Android 版のサンプル(Android2.2以降でアクセス)

※シナリオ:月華夜奏さん
※キャラクター画像は「著作権フリー立ちキャラクター素材集」を使用しています。
※背景画像は「きまぐれアフター」と「ぐったりにゃんこ」のフリー素材を使用しています。

著作権フリーキャラクター素材集


(関連記事)
Android と Applet の互換ってできるもんだね

category: プログラミング

thread: ゲーム開発

janre: コンピュータ

tag: グラフィックス 
tb: 0   cm: --

【Android】【Java】FontMetrics 図解  


FontMetrics 図解

 以前FontMetrics のまとめ。結構確認したいときも多いので、自分用リファレンス的な。

Paint paint = new Paint();
paint.setTextSize(22f);
FontMetrics fontMetrics = paint.getFontMetrics();

 フォントサイズは 22f で実験。プロパティを調べてみると以下のようになる(全て float 型)。


 Applet と違って Android では負の値も出る。ベースラインからの距離と向きという感じ。
 「fontMetrics.leading」は除いてるが、複数行のとき行間となる
 文字の高さは paint.getFontMetrics(null) でも paint.descent() - paint.ascent() でも同じ。
 文字列の幅は paint.measureText("文字列") で求められる。


(関連記事)
【Android】Paint で斜体文字(≒italic) の Canvas 描画


category: Android

thread: プログラミング

janre: コンピュータ

tag: Android資料  グラフィックス  図解 
tb: 0   cm: --


プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop