Java Android中的LibGDX屏幕支持大小

Java Android中的LibGDX屏幕支持大小,java,android,libgdx,scene2d,Java,Android,Libgdx,Scene2d,我正在尝试用LibGDX创建一个游戏。当我把背景放在屏幕上时,我的问题就来了。我创建了一个基本屏幕(摘要),以使其更简单。在桌面上,屏幕很适合,但在安卓系统中,尝试不同的设备,屏幕无法扩展到全屏。我使用下一个简单的代码解决了这个问题: public void render(float delta) { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.be

我正在尝试用LibGDX创建一个游戏。当我把背景放在屏幕上时,我的问题就来了。我创建了一个基本屏幕(摘要),以使其更简单。在桌面上,屏幕很适合,但在安卓系统中,尝试不同的设备,屏幕无法扩展到全屏。我使用下一个简单的代码解决了这个问题:

public void render(float delta) { 
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    batch.begin(); 
    batch.draw(texture, 0, 0, Gdx.graphics.getWidth(),  Gdx.graphics.getHeight()); 
    batch.end();
}
这足以让我在android设备上全屏观看我的游戏。现在,我想使用Scene2D(我不太了解…),所以我创建了一个舞台,我像演员一样处理背景。这是我的密码

public class MenuScreen extends BaseScreen {

private FitViewport viewport;
private Stage stage;
private Image imageFondo, imagePrueba;
//private float escala;

public MenuScreen(MissingWords missingwords) {
    super(missingwords);
}

@Override
public void show() {
    //viewport = new StretchViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    viewport = new FitViewport(800, 480);
    stage = new Stage(viewport, missingwords.getSB()); 
    //Gdx.input.setInputProcessor(stage);

    /* Crear fondo */

    imageFondo = new Image(missingwords.getAM().get("fondo.png", Texture.class));
    stage.addActor(imageFondo);

    imagePrueba = new Image(missingwords.getAM().get("prueba.png", Texture.class));
    imagePrueba.setPosition(50, 50);
    stage.addActor(imagePrueba);
}

@Override
public void render(float delta) {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    stage.act();
    stage.draw();
}

@Override
public void resize(int width, int height) {
    stage.getViewport().update(width, height, true);

}
但是,它不起作用,我不知道是否以正确的方式使用视口。我如何写这行代码才能与场景2D兼容并支持android设备

batch.draw(texture, 0, 0, Gdx.graphics.getWidth(),  Gdx.graphics.getHeight());
提前谢谢

最后,我使用
ScalingViewport
解决了这个问题。像这样:

viewport = new ScalingViewport(Scaling.stretch, 800, 480);

Scaling.stretch
正如javadoc所说:世界被缩放到可以容纳整个屏幕。所以,它没有保持纵横比,但对我来说是好的。也许使用大屏幕看起来不对,但我仍在学习,不知道这是否是最好的解决方案。因此,我希望这对某些人有所帮助。

您将两次实例化该阶段,从而删除对第一个阶段的所有引用<代码>阶段=新阶段(viewport,missingwords.getSB())
stage=newstage()删除第二行并重试。很抱歉,我注意到该错误,但我忘记更改它!现在,我编辑了代码,使用了FitViewport,但它显示为“黑条”。我不知道如何处理Scene2D来解决这个问题,因为我的批次在Stage的控制之下。有什么建议吗?为什么//viewport=newstretchviewport(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());注释?因为如果我使用viewport=newstretchviewport(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());在安卓系统中,设备看起来不太好。。。我得用800,480@adrianoubk你应该回答自己的问题,并将其标记为已接受。