Java LibGDX-了解当前设备是否支持给定的屏幕分辨率

Java LibGDX-了解当前设备是否支持给定的屏幕分辨率,java,libgdx,lwjgl,Java,Libgdx,Lwjgl,因此,我正在为我的程序编写一些处理基本配置的工具,从数据文件中读取设置,然后将这些设置设为活动配置。我还建立了一个错误检查机制,以确保设置格式正确,并且具有有效值 我想查看当前设备支持的分辨率,并将其与数据文件中指定的分辨率进行比较。在libGDX中有没有一种简单的方法可以做到这一点?我知道LWJGL有一个函数,可以为您提供一系列受支持的分辨率,但我不想重新发明轮子 我要找的东西是: 布尔值isValidResolutionForDevice(整数宽度、整数高度) 这是我自己写的吗?或者这已经存

因此,我正在为我的程序编写一些处理基本配置的工具,从数据文件中读取设置,然后将这些设置设为活动配置。我还建立了一个错误检查机制,以确保设置格式正确,并且具有有效值

我想查看当前设备支持的分辨率,并将其与数据文件中指定的分辨率进行比较。在libGDX中有没有一种简单的方法可以做到这一点?我知道LWJGL有一个函数,可以为您提供一系列受支持的分辨率,但我不想重新发明轮子

我要找的东西是: 布尔值isValidResolutionForDevice(整数宽度、整数高度)


这是我自己写的吗?或者这已经存在了?在我看来,这是一个非常有用的函数,它一定是被写入了某个库中。

不幸的是,libgdx中没有现成的解决方案,我这样解决它:

    private Map<Integer, Integer> supportedReolutions;
    private String graphicFolder;

    supportedReolutions = new HashMap<Integer, Integer>();
    supportedReolutions.put(1024, 768);
    supportedReolutions.put(1080, 1920);
    supportedReolutions.put(1200, 1920);
    supportedReolutions.put(2048, 1536);
    supportedReolutions.put(480, 800);
    supportedReolutions.put(640, 1136);
    graphicFolder = "1080x1920";

/**
 * Chose the folder with best graphic for current device
 */
private void setCurrentResolutionFolder() {
    int width = Gdx.graphics.getWidth();
    int height = Gdx.graphics.getHeight();
    if (supportedReolutions.containsKey(width)) {
        if (supportedReolutions.get(width) == height) {
            graphicFolder = String.valueOf(width) + "x"
                    + String.valueOf(height);
        }
    }
}
私有地图支持的布局;
私有字符串文件夹;
SupportedRoctions=新HashMap();
支持的置换。放置(1024768);
支持的换位思考(108011920);
支持的置换。put(1200,1920);
支持的发行量(20481536);
支持的置换。放置(480800);
支持的发行量(6401136);
graphicFolder=“1080x1920”;
/**
*为当前设备选择具有最佳图形的文件夹
*/
私有void setCurrentResolutionFolder(){
int-width=Gdx.graphics.getWidth();
int height=Gdx.graphics.getHeight();
if(支持的布局容器尺寸(宽度)){
if(supportedRoctions.get(宽度)=高度){
graphicFolder=String.valueOf(宽度)+“x”
+字符串.valueOf(高度);
}
}
}

实际上有一种方法可以做到这一点。主
com.badlogic.gdx.Application
接口有一个
getGraphics()
方法,从该接口返回的
com.badlogic.gdx.Graphics
类有
getDisplayModes()
方法,该方法返回
DisplayMode[]
<代码>显示模式基本上如下所示(注释和构造函数已删除):

然后你可以浏览这些,看看这个决议是否被支持

唯一让人恼火的消息是,因为
getGraphics()
位于应用程序对象上,在创建应用程序对象(例如
LwjglApplication
)之前,您似乎无法查询可用的图形模式。因此,您可能会选择任意分辨率(例如1024x768),启动游戏,如果原始分辨率实际上不受支持,则立即切换到受支持的分辨率(并且可以选择让用户在设置菜单中进行选择)



我遇到了我相信您所指的方法,
org.lwjgl.opengl.Display.getAvailableDisplayModes()
,老实说,我将在您的用例中使用这个方法。你几乎只是在里面用一个简单的条件进行迭代。不完全是重新发明任何东西。

我喜欢这个解决方案,但术语文件夹是什么?你是说物理文件目录吗?编辑:啊,是的,我知道你在这里做了什么。是的,这看起来不错。然后你可以从LWJGL获得支持的解决方案列表。OP是一篇已经有两年历史的帖子,已经有人回复了。我们甚至不再谈论同一个版本了。我知道这是一篇老文章。我想我会提供一个正确的答案,以防其他人也有同样的问题。啊,好的。是的,我听到了。
public class DisplayMode {
    /** the width in physical pixels **/
    public final int width;
    /** the height in physical pixles **/
    public final int height;
    /** the refresh rate in Hertz **/
    public final int refreshRate;
    /** the number of bits per pixel, may exclude alpha **/
    public final int bitsPerPixel;
}