Android モバイルのさまざまな画面比率にアプローチする最善の方法は何ですか?
現在、アプリをターゲット画面に強制 (ストレッチ) する EXACT_FIT を使用しています。しかし、コンテンツを画面の比率に合わせて動的にサイズ変更して、コンテンツの視覚的な比率を同じに保つにはどうすればよいでしょうか。
正確で実際の WINDOW サイズを取得するには、次を使用します。
Lib.application.window.width
Lib.application.window.height
これは常に同じではありません:
Lib.current.stage.width
Lib.current.stage.height
要素を動的にサイズ変更して配置する場合は、実際の画面解像度を取得し、「基本」解像度値に基づいてサイズ変更率を計算する必要があります。
画面の寸法は次のように取得できます
lib.current.stageWidth
lib.current.stageHeight
これらの値が機能するためには、Android のプロジェクト構成ファイルでウィンドウのサイズを 0 に設定する必要があることに注意してください。
試行錯誤しながら、すべての画面に最も合うサイズを見つけることをお勧めします。この画面サイズを見つけたら、ゲームに境界線を追加して、ほとんどのプレイヤーが見るよりも遠くに拡張します。これにより、各画面を埋めて縦横比を維持しながら、端の周りの厄介な空白スペースを削除することができます. これを行うと、画面の高さまたは幅 (縦横比を維持する方) に合わせて画面をスケーリングできるようになり、スケーリングの問題は発生しなくなります。
コンテンツの位置とサイズを画面の幅と高さのパーセンテージとして定義することをお勧めします。疑似Haxeコード(私は現在Haxe/HaxeFlixelを学んでいます;)):
class Registry {
...
static var SCREEN_WIDTH;
static var SCREEN_HEIGHT;
...
static var X_UI_HUD_TITLE = 0.15;
static var Y_UI_HUD_TITLE = 0.05;
}
...
class HUD {
var title:FlxText;
public function new() {
title = new FlxText();
title.x = Registry.SCREEN_WIDTH * Registry.X_UI_HUD_TITLE;
title.y = Registry.SCREEN_HEIGHT * Registry.Y_UI_HUD_TITLE;
}
}
このように、SCREEN_WIDTH
とSCREEN_HEIGHT
は変更される可能性がありますが、title
テキストは見かけ上同じ位置にあります。