gpt4 book ai didi

java - 像素点,桌面和安卓

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:26:43 26 4
gpt4 key购买 nike

我正在使用 Libgdx 编写 Android 游戏代码,您可能知道,如果操作不当,许多屏幕分辨率会导致一些问题。所以我尝试使用这个 DP 单位而不是像素。

不过,我这里有这个方法:

public static float pixelToDP(float dp){
return dp * Gdx.graphics.getDensity();
}

Gdx.graphics.getDensity() 方法实际上获取了 SCALE,所以它已经为我完成了。

现在的问题是,libgdx 是跨平台的,有利于测试。当我在我的 S4 上启动它时,它的分辨率为 1920x1080,dpi 高达 480,与我糟糕且价格过高的笔记本电脑(1366x768 @ 92dpi)相反,它正好放在我想要的位置。在桌面上,它偏离了很远,X 轴和 Y 轴上有好几百像素。

这是因为我的屏幕 dpi 是 @92dpi,分辨率低很多,实际游戏在桌面上不是全屏吗?

下面是绘制对象的代码:

table.setPosition(MathHelper.pixelToDP(150), MathHelper.pixelToDP(200));

为了让它在桌面上完美运行,我必须这样做:

table.setPosition(MathHelper.pixelToDP(480), MathHelper.pixelToDP(700));

这在我的手机上什至不可见,因为比例实际上是 3 倍,这使得它在 Y 轴上离开屏幕 200 像素。

有解决办法吗?或者我基本上必须处理平台检查和不同的代码块?

可能的解决方案:

所以我改变了我的 dp 转换方法,如果我要执行 100 * 0.5 它将返回一个新值 50 但实际上我想要 100 + 100 * 0.5 的原始值。

不确定这是否是一个正确的修复,但无论在笔记本电脑还是手机上,表格都绘制在完全相同的位置:

public static float pixelToDP(float dp){
if(Gdx.graphics.getDensity() < 1)
return dp + dp * Gdx.graphics.getDensity();
return dp * Gdx.graphics.getDensity();

这只是一个廉价的修复,还是应该如何完成?

最佳答案

密度独立像素的使用意味着表格在所有屏幕上的物理尺寸应该相同。由于您的笔记本电脑屏幕(物理上)大得多,您会看到 table 比预期的要小得多。

我会建议另一种方法,即按尺寸的分数放置对象。例如宽度的 30% 或高度的 45%。

要实现这一点,只需假设一个舞台分辨率并根据需要放置对象,然后在调整大小方法中更改视口(viewport),以便获得完整 View 。希望对您有所帮助。

更多, https://code.google.com/p/libgdx-users/wiki/AspectRatio

关于java - 像素点,桌面和安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com