androidでSurfaceViewを使ってゲームを作ってます。
機種によっての画面サイズの違いをどう処理いたらいいのか悩んでます。
Canvas.scaleを使って画面サイズに合わせて全体を拡大縮小すればいいのかなと
思ったので試してみたのですがうまくいきません。
手元に画面サイズ1280x720 と 800x480の実機があるので、1280X720を基準サイズとしています。
float scaleX = getWidth() / 720;
float scaleY = getHeight() / 1280;
scale = scaleX > scaleY ? scaleY : scaleX;
canvas.scale(scale, scale);
上記のような感じで比率を計算して、描画させてみたのですが、800x480の実機で試すと結構小さく表示されてしまいます。
これは、こういうものなのでしょうか?
scale = 0.625 なので、幅480x0.625 サイズでの表示になってしまうということでしょうか?
反対に基準を800x480として考えると、1280x720で表示させるとscale = 1.5になるので
画面からはみ出してしまうのですが。
そもそも、この考え方がダメなのでしょうか?
ご教授ください。
よろしくお願いいたします。
Androidの画面サイズの違い
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: Androidの画面サイズの違い
両者の縦横の比率が違うので、縦か横のどちらかのスケールに合わせると、合わせていない方の縦か横がはみ出すか小さくなりすぎます。
縦と横を別々のスケールで表示するか、余白を何かで埋めるか、画面をはみ出しても良いゲームデザインにするか、などを考えてみてください。
縦と横を別々のスケールで表示するか、余白を何かで埋めるか、画面をはみ出しても良いゲームデザインにするか、などを考えてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。