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

如何确定显示屏物理尺寸(厘米)?LibGDX在iPhone模拟器计算异常

为啥会算出错误的尺寸?

LibGDX在iOS上返回的getPpcX()/getPpcY是基于逻辑像素密度(对齐Android的密度体系)计算的,并非设备真实的物理像素密度。同时Gdx.graphics.getWidth()给出的是iOS的逻辑分辨率(point),不是物理像素数,因此用这两个值计算出的是“逻辑尺寸”,而非屏幕实际的物理大小。

结合你给出的参数来看:

  • getDensity()=1.65 对应Android风格的264dpi(160*1.65)
  • getPpcX()=264/2.54≈103.937,和你拿到的数值完全匹配
  • 用逻辑宽度430 × (1/103.937)≈4.13cm,这是逻辑尺寸,根本不是iPhone 15 Pro Max的真实屏幕宽度
怎么拿到真实物理尺寸?

方法1:调用iOS原生代码(最准确)

iOS系统直接提供了屏幕的物理像素密度(PPI)和物理分辨率,你可以通过JNI调用原生代码获取精准值:

  1. 在iOS项目中添加原生方法:
#import <UIKit/UIKit.h>
#import "com_badlogic_gdx_backends_iosrobovm_IOSGraphics.h"

@implementation IOSGraphics (PhysicalSize)
- (float)getScreenWidthInCm {
    CGSize nativeSize = UIScreen.mainScreen.nativeBounds.size;
    CGFloat ppi = UIScreen.mainScreen.pixelsPerInch;
    return (nativeSize.width / ppi) * 2.54f;
}

- (float)getScreenHeightInCm {
    CGSize nativeSize = UIScreen.mainScreen.nativeBounds.size;
    CGFloat ppi = UIScreen.mainScreen.pixelsPerInch;
    return (nativeSize.height / ppi) * 2.54f;
}
@end
  1. 在LibGDX中通过JNI调用这些方法即可获取真实物理尺寸。

方法2:设备型号映射表(无需原生代码)

如果不想编写原生代码,可以提前维护一份iOS设备型号与屏幕物理尺寸的对照表,通过LibGDX的Gdx.app.getType()或原生方法获取设备型号后,直接查表取值。比如iPhone 15 Pro Max的屏幕显示区域宽度约7.1cm,高度约15.5cm。

方法3:近似估算(快速凑合用)

如果不需要绝对精准的数值,可用物理分辨率和已知PPI估算:

  • 获取物理分辨率:Gdx.graphics.getBackBufferWidth()(iPhone 15 Pro Max会返回1290)
  • iPhone 15 Pro Max的物理PPI约为458,因此每厘米像素数为458/2.54≈180.3
  • 物理宽度=1290/180.3≈7.15cm,与真实值差距很小

注意:这种方法需要针对不同设备调整PPI数值,通用性较弱。

额外说明

你提到的“公开参数约6.7cm”应该是混淆了参数——iPhone 15 Pro Max的屏幕对角线为6.7英寸(约17.02cm),屏幕显示区域宽度约7.1cm,手机整机物理宽度约7.81cm。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:54:52