Можно ли определить DPI в ОС iPhone или Android?

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

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

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

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

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

iPhone4, разрешение 640x960 (326 dpi) — текст будет в два раза больше

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

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

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


person Jakooistra    schedule 21.06.2010    source источник


Ответы (2)


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

person iandisme    schedule 21.06.2010
comment
Спасибо за это, прошло почти полвека с тех пор, как мне нужна была эта информация, но теперь она здесь для меня. :) - person Jakooistra; 16.02.2014
comment
Хотя, основной вопрос, который я задавал, все же касался iOS, для которой, я думаю, до сих пор нет решения, кроме хардкодинга. К счастью, это меньшая проблема, чем я ожидал, даже сейчас, учитывая, что iOS довольно тесно привязывает DPI к своим форм-факторам. - person Jakooistra; 16.02.2014

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

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

person bensnider    schedule 22.06.2010