How to change libgdx different window size?
Asked Answered
C

4

18

How to change size in libgdx-android-desktop? I am confuse on window sizeing and not sure how to solve this problem.

So for desktop window i want 500x500 but with android i want full screen so i cant hard code it.
For some reason ANDROID_WIDTH is always equal to WINDOW_WIDTH.

 int WINDOW_WIDTH = 500;
 int WINDOW_WIDTH = 500;

public void create() {
    if (Gdx.app.getType() == ApplicationType.Android) {
        int ANDROID_WIDTH = Gdx.graphics.getWidth();
        int ANDROID_HEIGHT = Gdx.graphics.getHeight();
        camera = new OrthographicCamera(ANDROID_WIDTH, ANDROID_HEIGHT);
        camera.translate(ANDROID_WIDTH/2, ANDROID_HEIGHT/2);
        camera.update();
    } else {
        camera = new OrthographicCamera(WINDOW_WIDTH, WINDOW_HEIGHT);
        camera.translate(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2);
        camera.update();
    }

    Gdx.input.setInputProcessor(new GameInputProcessor());
}
Chrissychrist answered 12/1, 2014 at 19:19 Comment(1)
Gdx.graphics.getWidth(); will only give you 500 if your device screen width is also 500.Cluff
W
34

You cannot change the size of the windows by changing the camera. They are two separate concepts.

You set the size on desktop application in your main method through config lwjpg . Android application is full screen anyway.

LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = "Title";
cfg.useGL20 = true;
cfg.height = 640;
cfg.width = 360;
new LwjglApplication(new MyGame(), cfg);
Waddell answered 13/1, 2014 at 4:31 Comment(1)
Can we set window size to be more than screen size? I need help here @WaddellDorotea
D
11

You can give the Window size on Startup:

new LwjglApplication(yourApplicationListener(), "Title", 500, 500, true/false (useGL2));

You can also Change it in your game using:

Gdx.graphics.setDisplayMode(500, 500, true/false (fullscreen));

You can surround this by an if Statement like stuntmania said:

if (Gdx.app.getType().equals(ApplicationType.Android)) {
    Gdx.graphics.setDisplayMode(500, 500, false);
} else {
    Gdx.graphics.setDisplayMode(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(), true);
}

EDIT: In LibGDX 1.8 the Method Gdx.graphics.setDisplayMode has been renamed to Gdx.graphics.setWindowedMode:

API Change: Graphics#setDisplayMode(int, int, boolean) has been renamed to Graphics#setWindowedMode(int, int). This will NOT allow you to switch to fullscreen anymore, use Graphics#setFullscreenMode() instead. If the window is in fullscreen mode, it will be switched to windowed mode on the monitor the window was in fullscreen mode on.

(Source)

Disaccustom answered 14/1, 2014 at 7:57 Comment(4)
This doesn't work anymore in current versions. You'd probably use Gdx.graphics.setWindowedMode(width, height) instead, but I couldn't test it yet.Photokinesis
@Fran thanks for the information. I haven't used LibGDX for some time, so I am not able to update my answer. I first need to get some information about this new method. If you know how to do it, feel free to update this answer. Thanks :)Disaccustom
I understand, I added my comment just to warn others working with modern versions of libgdx. I think that method it's just equivalent to Gdx.graphics.setDisplayMode(width, height, false).Photokinesis
@Fran I found the entry in the changelog and updated the answer.Disaccustom
R
4

do this in your desktop project

cfg.width=500;
cfg.height=500;

and in your main class

int ANDROID_WIDTH = Gdx.graphics.getWidth();
int ANDROID_HEIGHT = Gdx.graphics.getHeight();

camera = new OrthographicCamera();
camera.setToOrtho(false, ANDROID_WIDTH, ANDROID_HEIGHT);
camera.update();
Ronen answered 13/1, 2014 at 7:37 Comment(1)
This won't change the window size. In fact, if the aspect ratio isn't the same (getWidth()/getHeight()), you'll just get a distorted viewport.Jere
H
1

Since time passed by, some things changed compared to the post of @Arash:

If you use Lwjgl3ApplicationConfiguration instead of LwjglApplicationConfiguration, then you have to use setWindowMode instead of height and width:

Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
config.setForegroundFPS(60);
config.setTitle("Title");
config.setWindowedMode(1800, 1000);
            
new Lwjgl3Application(new MyGame(), config);
Hopeh answered 4/6, 2023 at 20:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.