Можно ли обнаружить DPI в iPhone OS или Android? - PullRequest
5 голосов
/ 22 июня 2010

Я провожу некоторые исследования по созданию игры, которая сможет масштабировать свои графические ресурсы в соответствии с DPI любого устройства.

Чтобы сделать это, я бы хотел иметь возможность запросить DPI устройства, чтобы соответствующим образом масштабировать активы.

Это 2D игра, и художественный стиль вполне подходит для произвольного масштабирования.

пример того, что я бы сделал с комбо res / dpi:

iPhone / iTouch, с разрешением 320x480 (163 т / д) - текст будет обычного размера

iPhone4, с разрешением 640x960 (326 точек на дюйм) - текст будет в два раза больше

iPad, с разрешением 768x1024 (132 т / д) - текст, вероятно, будет ограничен до минимального размера, чтобы воспользоваться преимуществами большего экрана.

Итак, в iPhone OS есть способ запросить DPI экрана?

(и как примечание - это вообще возможно на устройствах Android?)

Ответы [ 2 ]

1 голос
/ 22 июня 2010

Я не уверен, есть ли прямой способ получить DPI, поскольку вам обычно не нужно это знать. Класс UIScreen предоставляет масштабный коэффициент. Для iPhone <= 3GS и iPad это должно быть 1.0, для iPhone 4 это должно быть 2.0. </p>

Прицел скомпилирован:

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. Такие вещи, как изображения, будут либо увеличены, либо автоматически выберет специально названное изображение с более высоким разрешением, и операции рисования также будут выполняться автоматически (например, при рисовании линии из 1 точки теперь рисуется линия 2px на Iphone 4). Шрифты могут обрабатываться аналогично, я не думаю, что сталкивался с какими-либо конкретными шрифтами. Читайте новые документы для информации:

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

1 голос
/ 22 июня 2010

Вы можете получить эту информацию в Android с помощью класса DisplayMetrics .

...