こんばんわ!Noranekoです。

前からAndroidの解像度についてイロイロ調べてて、
ちょっとまとめようと思っていたので、書いていきたいと思います。

なんといいますか、





解像度統一しろや!



もうね。この一言に尽きる。
昔から携帯の開発をいやいややっていて、やっぱりここにぶち当たりますね。

最近dpiって言葉を聞くけど、AppleがiPhoneのネタなくなって、
情弱を騙す為に使ったのがきっかけだと思う。

dpiとは、『dots per inch』で、dotという最小単位が1inchの長さにどれだけ入るかという
単位であり、元々は印刷する時等に使われてた物です。
Androidでのdpiの使われ方がちょっとあれなので、覚えておくとキャバクラとかでもてるよ!

んで、本題に入るぜ!
Androidの解像度と画像の記事でよく見かけるのが、
『このdpiを参照して拡縮するといいよ』
とあるんですが、去年の話なのですが、
IS03でデバッグしてた時に、画像とかが変な風に表示されてました。
その時、AVDでも確認しましたが、
hw.lcd.density: 160
で設定してる時と同じ症状でした。
(現在、検索すると320でAVDを設定してる人もいます。なんでだろう…)

こういうことがあったので、この数値を当てにしない方が良いのかなと。
特に、sharpやsharp、sharp製は怪しい。
では、どうするのか?

3択-一つだけ選びなさい
答え①ハンサムのオレは突如画期的なアイデアがひらめく
答え②仲間がきて助けてくれる
答え③どうにもならない。現実は非情である。






答え③


どうにもなりません。あきらめましょう…



と言いたい所ですが、いくつか方法があります。
良かったですね!
こんなくだらないブログをわざわざ読んで下さった方々の為に、以下の方法を。

①drawable-hdpi、drawable-mdpi、drawable-ldpi等に最適化した画像を用意する
②drawable-nodpiというディレクトリを設定し、画像を放り込む
③dpiを使わない方法

ゲームのように大量に画像がある場合は、①の方法を使うと死にます。
ゲームでドット画を再現したい場合は②を使うのがおすすめ。
(CAT FANTASYでは②を採用しています)
※②を使った場合、解像度が高い携帯では基準にした画像で表示される為小さくなります。

で、今回③の方法を詳しく説明したいと思います。
現在、1024*720というアホな解像度のスマートフォンが出てきたということですが、
自分は800*480を基準とし、それ以上に対応と言う形が無難だと思ってるので、
そのやり方を説明します。
まず画像を全部『drawable-hdpi』に放りこみます。


int PX = 64;
// 画面情報取得
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
// 画像取得
BitmapFactory.Options op = new BitmapFactory.Options();
op.inTargetDensity = DisplayMetrics.DENSITY_HIGH;
Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.gazo, op);
// 画像表示
Canvas.drawBitmap(bmp,
new Rect(0, 0, PX, PX),
new Rect(0, 0, PX*width/480, PX*width/480),
null);


解説
64*64の画像を表示する時のロジックです。
8行目の『DisplayMetrics.DENSITY_HIGH』を指定してるのは、『drawable-hdpi』に画像がある為です。

blog001.png
このようなゲーム画像を表示したい時にも対応できます。

多分…


なんか今調べたら、540*960や1024*600という変な解像度がいっぱいある…
せめてアスペクト比を統一して下さい・・・




気に入ったら押してね
  ブログランキング・にほんブログ村へ




~こんなアプリ出してます~

authored by Noraneko | Comment(0) | Android
コメント


お名前*

Email Address

URL

コメント*



BLOG内検索
<< 2024/04 >>
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
<< 過去ログ >>