2015-06-24 5 views
2

У меня есть эмулятор с разрешением экрана 720X1280 и плотностью 320 точек на дюйм.Размер экрана для понимания Android

Теперь, когда я использую следующий код, чтобы узнать, dpheight dpwidth и плотность

Display display = getWindowManager().getDefaultDisplay(); 
    DisplayMetrics outMetrics = new DisplayMetrics(); 
    display.getMetrics(outMetrics); 

    float density = getResources().getDisplayMetrics().density; 
    float dpHeight = outMetrics.heightPixels/density; 
    float dpWidth = outMetrics.widthPixels/density; 

Я получаю следующие значения:

06-24 06:47:46.027 D/Density (1003): 2.0 
06-24 06:47:46.027 D/DPHeight(1003): 592.0 
06-24 06:47:46.027 D/DPWidth (1003): 360.0 

Я не могу понять это. Может кто-то затенять на него какой-то свет?
Я намерен разработать приложение с множеством текстовых сообщений, и я хочу соответствующим образом установить размеры текста, чтобы он выглядел последовательным.

И да, я просмотрел документацию Google по этому вопросу.
Но я не мог понять, следовательно, этот вопрос.

+0

http://stackoverflow.com/a/6589124 – Sree

+0

@Sree Я знаю, как получить эти размеры. Что означает плотность = 2.0? То, что я не понимаю –

ответ

4

Density 2.0 - твой друг. Это базовая точка (dpi = mdpi) множитель. В фактах: 320/160 = 2,0

[EDIT]

Для ясности:

If your emulator is then the density is which actually is 

xxxhdpi    4.0     640 dpi 
xxhdpi    3.0     480 dpi 
    xhdpi    2.0     320 dpi 
    hdpi    1.5     240 dpi 
    mdpi    1.0     160 dpi 
    ldpi    0.75     120 dpi 
+0

Итак, вы говорите, что фактические dpi моего эмулятора 160dpi? Простите меня, если мой вопрос кажется немного ребяческим. Мне нужна настоящая ясность в этом. –

+0

Нет, это ** 320 ** dpi. В действительности масштаб умножения равен ** 2.0 **. Если это было 160 dpi, плотность была бы равна ** 1.0 **: ** 160/160 = 1.0 ** –

+0

Ваш отредактированный ответ действительно полезен. Итак, как размер текста работает во всех сценариях. Допустим, я определяю ** small_text = 14sp **, как мне назначить значения для этого small_text, чтобы он хорошо масштабировался на всех устройствах? –

0

2.0 является отношение pixels/dp экрана. Чтобы получить размер вашего экрана в DP, вам нужно взять его размер в пикселях и разделить его на Density (2.0)

Смежные вопросы