5

我正在对制作一款能够扩展其图形资源以适应其所在设备的 DPI 的游戏进行一些研究。

为了做到这一点,我希望能够查询设备的 DPI,以适当地缩放资产。

这是一款 2D 游戏,美术风格非常适合任意缩放。

我将如何处理 res/dpi 组合的示例:

iPhone/iTouch,320x480 (163 dpi) - 文本将是正常大小

iPhone4,640x960 (326 dpi) - 文本将是原来的两倍

iPad,768x1024 (132 dpi) - 文本可能会被限制在某个最小尺寸,以利用更大的屏幕空间。

那么,在 iPhone OS 上,有没有办法查询屏幕的 DPI?

(附带说明 - 这在 Android 设备上是否可行?)

4

2 回答 2

1

您可以使用DisplayMetrics类在 Android 中获取此信息。

于 2010-06-21T21:54:40.857 回答
1

我不确定是否有直接获取 DPI 的方法,因为您通常不需要知道它。UIScreen 类确实公开了一个比例因子。对于 iPhone <= 3GS 和 iPad,它应该是 1.0,对于 iPhone 4,它应该是 2.0。

视线编译:

UIScreen *theScreen = [UIScreen mainScreen];
float scaleFactor = 1.0f;
if ([theScreen respondsToSelector:@selector(getScale)]) {
    scaleFactor = theScreen.scale;
}
// use scaleFactor to determine size of fonts/whatever

但是,新操作系统在不同屏幕分辨率方面的实施方式意味着您通常不必根据 DPI 自定义缩放。像图像这样的东西要么被放大,要么它会自动选择一个特别命名的更高分辨率的图像,并且绘图操作也会自动处理(比如在 Iphone 4 上绘制 1 点线现在绘制 2 像素线)。字体可能会以类似方式处理,我认为我没有遇到任何特定于字体的内容。阅读新文档以获取信息:

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html#//apple_ref/doc/uid/TP40007072-CH10

于 2010-06-22T18:05:13.810 回答