【教えてください】SurfaceViewでの解像度対応について

363 views
Skip to first unread message

micco

unread,
Oct 11, 2010, 1:50:52 AM10/11/10
to 日本Androidの会
こんにちは。
miccoです。

レイアウトファイルの場合、単位をdpやspで指定することによって、様々な解像度
に対応したアプリが作れますが、SurfaceViewでBitmapを表示してゲームアプリ
を作る場合、どのように対応するのが美しいのかノウハウをご教示頂けたらと思っ
ています。

SurfaceViewを使ったアプリでは、VGAをターゲットにして画面を構成していますが
(40px×40pxの画像を横に12個並べたステージ画面)、IS03のようなVGAよりもド
ット数が多い端末ですと、画像が小さて見づらい状態になるものと思いますし、そも
そもHVGAだとはみ出してしまいます。

実画面のwidthとheightを取得し、VGAとの比率を使ってBitmapを取得する際に拡
大縮小し、表示の際に拡大縮小率に合わせて配置座標を調整するという原始的な
方法しか思いつきません。

どなたか正攻法をご教示頂ければ幸いです。
よろしくお願いいたします。

micco

unread,
Oct 26, 2010, 12:31:28 PM10/26/10
to 日本Androidの会
こんばんは。
miccoです。

本投稿ですが、どなたかテクニックを教えて頂けたらと思います。
VGA画面にフィットするようなサイズでアプリ画像を作っていますが、

たとえば、
float scale = getWidth()/480.0f;
として(QVGA:0.5、HVGA:0.666666・・・・・、VGA:1.0)、
int w = image.getWidth();
int h = image.getHeight();
int ex = sx+(int)(w*scale);
int ey = sy+(int)(h*scale);
src = new Rect(0,0,w,h);
dst = new Rect(sx,sy,ex,ey);
canvas.drawBitmap(image,src,dst,paint);
のような方法で画面のドット数に合わせてBitmapを拡大縮小して座標も調整して表示するような対応を行うのが正しいでしょうか?

これだとキャストで座標等に誤差が生じるので微妙です。たぶん違うのでしょう。
みなさんは、独自View内に表示する画像のマルチ解像度対応をどうやっていますか?
ご教示の程よろしくお願いいたします。
Reply all
Reply to author
Forward
0 new messages