Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android上的Libgdx调整窗口大小以填充屏幕_Java_Android_Libgdx - Fatal编程技术网

Java android上的Libgdx调整窗口大小以填充屏幕

Java android上的Libgdx调整窗口大小以填充屏幕,java,android,libgdx,Java,Android,Libgdx,我正在尝试填充Libgdx附带的resize函数,以适应所有android屏幕 到目前为止,我看到的最好的解决方案是本教程:但当我在Galaxy S3上运行它时,按钮非常小,而且整个游戏都很小,在桌面版上,它很大,而且是我想要的样子。我现在的调整大小代码是: @Override public void resize(int width, int height) { float aspectRatio = (float)width/(float)height; float scal

我正在尝试填充Libgdx附带的resize函数,以适应所有android屏幕

到目前为止,我看到的最好的解决方案是本教程:但当我在Galaxy S3上运行它时,按钮非常小,而且整个游戏都很小,在桌面版上,它很大,而且是我想要的样子。我现在的调整大小代码是:

@Override
public void resize(int width, int height) {
    float aspectRatio = (float)width/(float)height;
    float scale = 2f;
    Vector2 crop = new Vector2(0f, 0f); 
    if(aspectRatio > ASPECT_RATIO)
    {
        scale = (float)height/(float)VIRTUAL_HEIGHT;
        crop.x = (width - VIRTUAL_WIDTH*scale)/2f;
    }
    else if(aspectRatio < ASPECT_RATIO)
    {
        scale = (float)width/(float)VIRTUAL_WIDTH;
        crop.y = (height - VIRTUAL_HEIGHT*scale)/2f;
    }
    else
    {
        scale = (float)width/(float)VIRTUAL_WIDTH;
    }

    float w = (float)VIRTUAL_WIDTH*scale;
    float h = (float)VIRTUAL_HEIGHT*scale;
    viewport = new Rectangle(crop.x, crop.y, w, h);
}
我的变量是:

private static final int VIRTUAL_WIDTH = 600;
private static final int VIRTUAL_HEIGHT = 800;
private static final float ASPECT_RATIO = (float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT;

public static BitmapFont FONT;

private OrthographicCamera camera;
private Rectangle viewport;
private SpriteBatch sb;

正如我所说,当我运行桌面版时,它工作正常,但当我在Galaxy S3(屏幕昏暗:1280 x 720)上运行时,游戏被放大了很多,它可以裁剪出游戏的顶部和侧面,这根本不是我想要的。

你能记录下定义的视口值以及S3上使用的宽度/高度吗?如果我没有弄错的话,是1280 x 720,你是相对于viewport.x和viewport.y绘制屏幕元素,还是相对于0,0?我认为记录一些实际使用的数字将有助于了解正在发生的事情。你的确切意思是什么。我是从我在视点坐标处绘制纹理的x和y坐标开始的吗?我不会这么做的。我本以为它会自动这么做。@Jon,我只是实现了这一点,并体验了你所做的。下面的帖子以“感谢缩放提示”开头。作为坐标相对于(0,0)的
resize
方法的替代品,它的工作非常出色。
private static final int VIRTUAL_WIDTH = 600;
private static final int VIRTUAL_HEIGHT = 800;
private static final float ASPECT_RATIO = (float)VIRTUAL_WIDTH/(float)VIRTUAL_HEIGHT;

public static BitmapFont FONT;

private OrthographicCamera camera;
private Rectangle viewport;
private SpriteBatch sb;