libgdx 自适应分辨率

发现使用如下的适配,会出现很多问题,这边依据代码,重新设计了下适配:

其实使用正交摄像头即可解决此问题:

这里使用320 560 来做为开发分辨率,适配当前屏幕。

camera = new OrthographicCamera(320, 560); camera.position.set(320 / 2, 560 / 2, 0);

在 render 接口里面使用:

camera.update(); Batch.setProjectionMatrix(camera.combined);

即可完成了。

为何下面的方式会出错,我们看下源码就会发现缩放时比率有些问题,具体大家看代码研究吧。

出错的方式:

Android的碎片化始终受到开发者们的抱怨(ios如今也出现了相同的问题),各种分辨率,各种屏幕大小给开发测试带来了很大的困难。尤其是个人开发者,由于精力有限,

  根本没法每个机型都测试一遍。刚开始使用libgdx,我针对各个分辨率都设定了一套坐标,那个痛苦啊。。。后来发现libgdx本身可以自适应分辨率,太傻叉了自己。

  虽然可以自适应分辨率,但是是通过伸缩调整的,所以有些分辨率下画面会显得走形,但比起一个个去调整就将就了吧。我一般使用的游戏框架为

libgdx 自适应分辨率_第1张图片

看一下stage的构造方法

public Stage(float width,float height,boolean stretch)

  width 视图的宽

  height 视图的高

  stretch 是否拉伸视图至真实分辨率

 

我一般选择800×480作为基准分辨率

复制代码
public class MyGame extends Game {
    MyScreen screen = null;

    @Override
    public void create() {
        //初始化界面,设定标准分辨率大小
        screen = new MyScreen(800, 480);
        setScreen(screen);
    }
}
复制代码

 

所有的stage都以基准分辨率进行设计和排版

复制代码
public class MyScreen implements Screen {
    private MyStage stage = null;

    public MyScreen(int baseW, int baseH) {
        //true 为自适应分辨率
        stage = new MyStage(baseW, baseH, true);
    }

    @Override
    public void render(float arg0) {
        stage.draw();
    }
    
        ......  
}

你可能感兴趣的:(android,源码分析,libgdx)