Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 LibGDX Scene2d.ui带dip的自适应大小_Java_Android_Libgdx - Fatal编程技术网

Java LibGDX Scene2d.ui带dip的自适应大小

Java LibGDX Scene2d.ui带dip的自适应大小,java,android,libgdx,Java,Android,Libgdx,这是我的代码: public class Menu implements Screen { private MyGdxGame gameInstance; public Stage stage; public Table root; public Label wellcomeLabel; public TextButton startButton; public Menu(MyGdxGame gameInstance) { this.gameInstance = gameInstan

这是我的代码:

public class Menu implements Screen {

private MyGdxGame gameInstance;
public Stage stage;
public Table root;
public Label wellcomeLabel;
public TextButton startButton;

public Menu(MyGdxGame gameInstance) {
    this.gameInstance = gameInstance;
    stage = new Stage();
    root = new Table();
    root.setDebug(true);
    root.setFillParent(true);
    root.top();
    stage.addActor(root);

    wellcomeLabel = new Label("Wellcome!",gameInstance.labelStyle);
    startButton = new TextButton("Start",gameInstance.btnStyle);

    root.add(wellcomeLabel).pad(32);
    root.row();
    root.add(startButton).size(240,100);
}

@Override
public void show() {

}

@Override
public void render(float p1) {
    Gdx.gl.glClearColor(0.4f,0.4f,0.4f,1f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();
}

@Override
public void resize(int p1, int p2) {

}

@Override
public void pause() {

}

@Override
public void resume() {

}

@Override
public void hide() {

}

@Override
public void dispose() {

}
}
表格可以帮助我们调整演员的位置,但大小如何?我有一个想法:使用dip(密度无关像素)。 但我听说:

密度无关像素-基于屏幕物理密度的抽象单位

这是否意味着它只是基于屏幕的物理密度,而不是基于屏幕大小?
我想把它用于演员的大小和填充。

LibGDX的UI系统没有任何自适应缩放。这意味着,如果您想使用ScreenViewport作为像素完美资源,那么在设置UI时,您必须获得当前屏幕尺寸,并使用它们计算比例因子,然后将其乘以设置UI时使用的每个尺寸

我不在乎这些。相反,我使用ExtendViewport在每个屏幕上以一致的比例绘制所有内容:

  • 我使我的UI资产具有相当大的规模,以便在任何屏幕上看起来都很漂亮
  • 我的UI资源有自己的TextureAtlas。我用三线性过滤(MipMapLinearLinear,Linear)加载它。因此,缩小比例后,艺术仍然显得清晰
  • 在我的BitmapFont上,我调用
    setUseIntegerPosition(false)
    以允许字母的非整数定位,这样在放大或缩小时,字距不会变得不稳定
  • 我在UI阶段使用ExtendViewport,而不是ScreenViewport。如果以1:1像素的比例绘制,我会根据屏幕尺寸与我的艺术资产的关系来选择虚拟尺寸
  • 无需使用任何手动缩放。填充、间距和大小可以用我的源代码的像素单位声明。ExtendViewport负责为您进行缩放
这一过程的缺点:

  • 在尺寸较小的屏幕上使用内存是很浪费的,因为内存中加载的纹理比需要的大
  • 文本和UI元素的清晰度略低于完美像素绘制时的清晰度
  • 在GPU上,使用MipMapLinearLinear绘制东西比使用最近的过滤要重

好处是您只需要管理一个UI TextureAtlas。您不需要在多个比例上创建它,以使它在不同的屏幕大小和密度上保持一致。单元易于使用。由于您使用的是三线性过滤,因此可以对动画效果使用缩放,这样它们看起来会很平滑。例如,我使用动作使按钮在按下时快速放大动画。

LibGDX的UI系统没有任何自适应缩放。这意味着,如果您想使用ScreenViewport作为像素完美资源,那么在设置UI时,您必须获得当前屏幕尺寸,并使用它们计算比例因子,然后将其乘以设置UI时使用的每个尺寸

我不在乎这些。相反,我使用ExtendViewport在每个屏幕上以一致的比例绘制所有内容:

  • 我使我的UI资产具有相当大的规模,以便在任何屏幕上看起来都很漂亮
  • 我的UI资源有自己的TextureAtlas。我用三线性过滤(MipMapLinearLinear,Linear)加载它。因此,缩小比例后,艺术仍然显得清晰
  • 在我的BitmapFont上,我调用
    setUseIntegerPosition(false)
    以允许字母的非整数定位,这样在放大或缩小时,字距不会变得不稳定
  • 我在UI阶段使用ExtendViewport,而不是ScreenViewport。如果以1:1像素的比例绘制,我会根据屏幕尺寸与我的艺术资产的关系来选择虚拟尺寸
  • 无需使用任何手动缩放。填充、间距和大小可以用我的源代码的像素单位声明。ExtendViewport负责为您进行缩放
这一过程的缺点:

  • 在尺寸较小的屏幕上使用内存是很浪费的,因为内存中加载的纹理比需要的大
  • 文本和UI元素的清晰度略低于完美像素绘制时的清晰度
  • 在GPU上,使用MipMapLinearLinear绘制东西比使用最近的过滤要重

好处是您只需要管理一个UI TextureAtlas。您不需要在多个比例上创建它,以使它在不同的屏幕大小和密度上保持一致。单元易于使用。由于您使用的是三线性过滤,因此可以对动画效果使用缩放,这样它们看起来会很平滑。例如,我使用动作使按钮在按下时快速放大动画。

是的,DIP完全基于屏幕DPI。在Android上使用DIP来保持真实世界单位的大小和间距近似相等。因此,如果一个按钮在具有高或低DPI的平板电脑上是20毫米宽,那么在具有高或低DPI的微型手机上也是20毫米宽。这就是你想要的吗?或者您希望对象在任何设备上占总屏幕大小的相同百分比吗?Tenfour04,是的,我希望在任何设备上占总屏幕大小的相同百分比。我真的不明白:为什么桌子没有自适应尺寸系统?所以,我知道如何计算演员人数的百分比,但填充呢?和文本大小?我使用FreeType加载字体。在获取BitmapFont对象之前,我设置了大小。字体如何自适应?是的,DIP完全基于屏幕DPI。在Android上使用DIP来保持真实世界单位的大小和间距近似相等。因此,如果一个按钮在具有高或低DPI的平板电脑上是20毫米宽,那么在具有高或低DPI的微型手机上也是20毫米宽。这就是你想要的吗?或者您希望对象在任何设备上占总屏幕大小的相同百分比吗?Tenfour04,是的,我希望在任何设备上占总屏幕大小的相同百分比。我真的不明白:为什么桌子没有自适应尺寸系统?所以,我知道如何计算演员人数的百分比,但那又如何呢