You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android平台的libGDX项目中设置480x800屏幕尺寸

解决libGDX Android端适配480x800屏幕尺寸的问题

Hey,我懂你遇到的这个问题——桌面端改个config.width/config.height就能固定480x800,但Android端因为设备屏幕五花八门,直接这么搞根本不生效对吧?别慌,咱们一步步来搞定:

1. 先调整AndroidLauncher的窗口配置

Android端的窗口初始化逻辑和桌面端不一样,你需要在AndroidLauncher里明确设置期望的分辨率,还可以配合全屏设置避免系统栏干扰:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
    
    // 可选:开启沉浸式全屏,隐藏状态栏和导航栏(让游戏占满屏幕)
    config.useImmersiveMode = true;
    config.hideStatusBar = true;
    config.hideNavigationBar = true;
    
    // 设置你想要的固定分辨率
    config.width = 480;
    config.height = 800;
    
    initialize(new YourGameInstance(), config);
}

2. 用Viewport配合Camera实现虚拟分辨率适配

你之前只设置了OrthographicCamera但没生效,核心问题是没配合Viewport来做分辨率映射。libGDX的Viewport就是专门解决不同屏幕尺寸下,让游戏内容按固定虚拟分辨率渲染的工具。

在你的Game类或者Screen类里这样写:

private OrthographicCamera camera;
private Viewport viewport;

@Override
public void create() {
    // 初始化相机
    camera = new OrthographicCamera();
    // 选择合适的Viewport类型:
    // - FixedViewport:严格固定480x800,超出屏幕的内容会被裁剪(适合完全固定尺寸的场景)
    viewport = new FixedViewport(480, 800, camera);
    // 如果你想保持480:800的比例,用FitViewport,剩余空间会用黑边填充:
    // viewport = new FitViewport(480, 800, camera);
    
    // 初始化你的游戏资源、Stage等...
    // 要是用Scene2D做UI,记得把Stage的Viewport也设成这个:
    // Stage stage = new Stage(viewport);
}

@Override
public void resize(int width, int height) {
    // 每次屏幕尺寸变化(比如旋转、切换分屏)时更新Viewport
    viewport.update(width, height);
    // 确保相机居中显示游戏内容
    camera.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2, 0);
    camera.update();
}

3. 辅助配置AndroidManifest.xml

为了避免屏幕旋转导致的适配混乱,建议把Activity固定为竖屏(毕竟480x800是竖屏比例):

<activity
    android:name=".AndroidLauncher"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

为啥桌面端直接改config就生效?

桌面端是直接设置窗口的物理大小,系统会严格按照你给的尺寸创建窗口;但Android端是移动设备,系统会优先适配设备的物理屏幕,所以必须通过Viewport把实际屏幕尺寸映射到你想要的虚拟分辨率480x800,这样游戏里的所有渲染、UI布局都会基于这个虚拟尺寸来计算,不管设备屏幕多大,显示效果都和480x800一致。

内容的提问来源于stack exchange,提问作者hyperCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:58:39