处理安卓手机各种屏幕比例的最佳方法是什么?
目前,我使用 EXACT_FIT,它将应用程序强制(拉伸)到目标屏幕。但是如何根据屏幕比例动态调整内容的大小,以便内容在视觉上保持相同的比例。
如果要动态调整元素的大小和位置,则必须获取实际的屏幕分辨率,然后根据某些“基本”分辨率值计算调整大小比率。
您可以通过以下方式获取屏幕尺寸
lib.current.stageWidth
lib.current.stageHeight
请记住,要使这些值起作用,您必须在项目配置文件的 android 上将窗口尺寸设置为 0。
要获得正确和真实的窗口大小,请使用:
Lib.application.window.width
Lib.application.window.height
这并不总是相同的:
Lib.current.stage.width
Lib.current.stage.height
我建议您通过反复试验找到最适合所有屏幕的尺寸。一旦你找到这个屏幕尺寸,就为你的游戏添加一个边框,它的扩展范围比大多数玩家看到的要远。然后,这将允许您填充每个屏幕并保持宽高比,同时还可以消除边缘周围的任何尴尬空白。完成此操作后,您应该能够缩放屏幕以适应屏幕的高度或宽度(始终保持您的纵横比)并且没有任何缩放问题。
我建议将您的内容的位置和大小定义为屏幕宽度和高度的百分比。在伪 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
andSCREEN_HEIGHT
可能会发生变化,但title
文本将位于相同的明显位置。