解像度によらず全画面に表示させるには

866 views
Skip to first unread message

atsushi tanaka

unread,
Dec 12, 2011, 12:47:10 AM12/12/11
to 日本Androidの会
お世話になります。

色々なアプリ,ゲームなんかをダウンロードして使ってみましたが
私の機種(画面解像度1280x720),弟の機種(800x480)のどちらで
動かしても拡大縮小で全画面にフィットした表示をされるものが
ほとんどでした。

私が作ってるもので実験すると弟の機種(800x480)では全画面で
表示されるものの私の機種(1280x720)では左上から800x480ドット分
のみ表示されているようになってしまいました。

オートでリサイズして常に全画面表示されるようにするにはどうすれば
良いのでしょう?

作っているアプリはゲームでしてactvity→surfaceviewでループ,描画を
入れて走っています。

疋田

unread,
Dec 13, 2011, 4:30:31 AM12/13/11
to 日本Androidの会
疋田です。

AndroidManifest.xmlに以下のように書いてもだめでしょうか?
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="false"
android:anyDensity="false" />

multi screen対応はyanzmさんのblogに書かれています。
http://y-anz-m.blogspot.com/2010/02/android-multi-screen.html

データも含めてちゃんと対応するなら自分の書いたブログのエントリにやり方が書いてあります
http://michi-h.blogspot.com/2011/12/android-2-androidandroid.html
お役に立ちますでしょうか。

ishihata

unread,
Dec 13, 2011, 10:31:50 PM12/13/11
to 日本Androidの会
こんにちは。石畑と申します。

たぶん一番良い方法は、各解像度ごとに画像リソースを用意して
切り替えて使うやり方だとは思います。ですが、Androidの場合
解像度がメーカー任せですから「想定外の解像度」の機種が
現れたりすると対応に苦慮することになるんですよね。

で、すべての解像度に対応させようとすると、結局はアプリ側で
拡大縮小処理をする必要が出てくると思います。
SerfaceViewを使われているのでしたら、ゲーム画面(800x480)を
サーフェスのサイズ(1280x720)に拡大描画するようにしてはいかがでしょうか。

ただ、拡大処理はそれなりにCPUパワーを食いますので、
OpenGLでGPUを使うか、Android3.0以降であればマニフェストに
android:hardwareAccelerated="true"を付けるかした方が
良いと思います。

atsushi tanaka

unread,
Dec 14, 2011, 12:30:51 AM12/14/11
to 日本Androidの会
疋田さんありがとうございます。

manifestのsuppoerts-screens書いて見ましたが
小解像度でぴったりの画面が大解像度でもぴったり・・・とは
うまくいかず,余白部分が見えてそのままのサイズで描画されていました。

他の方々はオートでリサイズされてるのに自分だけされない・・・
のではなく,他の方々もソースで画面サイズ取得→各々の画像なりをリサイズ
してるのでしょうね。

画面表示する際の各々のキャラなどの座標指定に問題があるのかも?
いただいたリンク先がかなり分かりやすくなっているので
これを参考に続けて挑戦してみます。


石畑さんありがとうございます。

各解像度に対応したものを作るわけですね。
800x400や1280x720あたりで十分と思うので
それほど労力もなさそうなのでうまく行かなかったら
最後の手段として使わせていただこうと思います。

Reply all
Reply to author
Forward
0 new messages