34 Вопрос: В чем разница между «px», «dip», «dp» и «sp»?

вопрос создан в Mon, Dec 3, 2018 12:00 AM

В чем разница между единицами измерения Android?

  • точек
  • падение
  • дп
  • зр
5560
  1. это полная разница между px, dip, dp и sp в Android [ developer.android.com/руководство /темы /ресурсы /...
    2012-05-25 09: 34: 20Z
  2. 2014-07-01 09: 28: 04Z
  3. новое описание в Google Design Единицы измерения и измерения
    2015-04-27 11: 31: 32Z
  4. 2017-07-15 10: 40: 21Z
  5. 2017-09-13 07: 41: 50Z
30 ответов                              30                         

Из документации для разработчиков Android : р>

  1.   

    px
    Pixels - соответствует фактическим пикселям на экране.

  2.   

    в
    дюймы - в зависимости от физического размера экрана.
      1 дюйм = 2,54 сантиметра

  3.   

    мм
    Миллиметры - в зависимости от физического размера экрана.

  4.   

    pt
    Точки - 1/72 дюйма в зависимости от физического размера экрана.

  5.   

    dp или dip
    Density - независимые пиксели - абстрактная единица измерения, основанная на физической плотности экрана. Эти единицы относятся к 160       Экран dpi, поэтому один dp - это один пиксель на экране 160 dpi. Соотношение       dp-to-pixel будет меняться в зависимости от плотности экрана, но не обязательно       в прямой пропорции. Примечание: компилятор принимает как «dip», так и       «dp», хотя «dp» более соответствует «sp».

  6.   

    sp
    Масштаб - независимые пиксели - это похоже на единицу измерения dp, но также масштабируется в соответствии с предпочтениями размера шрифта пользователя. Рекомендуется вам       используйте этот блок при указании размеров шрифта, чтобы они были скорректированы       как для плотности экрана, так и для предпочтений пользователя.

От Понимание независимости от плотности в Android :

 
+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
 
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Дополнительную информацию также можно найти в документации по дизайну Google . р>     

5552
2018-12-03 05: 07: 41Z
  1. , хотя они должны быть одинаковыми, у меня, как правило, много проблем с dp, в то время как с dip все работает нормально.
    2011-07-04 06: 07: 31Z
  2. Одна заметка о db /sp, которая не совсем очевидна: масштабирование, которое происходит для них, зависит не от реальной плотности устройств (dpi), а от того, какое "ведро" плотности, в которую он попадает: доступные корзины: 120 160 240 320. Это может вызвать некоторые проблемы при работе с экранами, которые значительно различаются, но имеют одинаковые значения.
    2011-10-29 04: 10: 05Z
  3. Обратите внимание, что в документации больше не упоминается "dip", а только "dp", хотя компилятор все еще принимает "dip".
    2013-05-28 00: 28: 51Z
  4. @ android_developer (5 комментариев выше) dp не имеет не одинаковую физическую длину. (Хотя это близко.) См. Комментарий @ Fraggle о ведении. Это означает, что 48dp будет примерно 8 мм (0,3 дюйма), но может варьироваться до 11 мм.
    2013-06-15 06: 59: 43Z
  5. Причиной объединения является то, что разработчики могут тестировать свои приложения на нескольких устройствах различной плотности и быть уверенными, что макеты будут выглядеть одинаково на множестве устройств. Таким образом, даже если физический размер кнопок и т. Д. Немного изменится, общий вид действия будет таким же.
    2013-06-15 07: 03: 34Z

Практически все об этом и о том, как добиться наилучшей поддержки нескольких экранов разных размеров и плотности, очень хорошо задокументировано здесь:

  

Размер экрана
  Фактический физический размер, измеренный как диагональ экрана.   Для простоты Android группирует все фактические размеры экрана в четыре   обобщенные размеры: маленький, нормальный, большой и очень большой.

     

Плотность экрана
  Количество пикселей в физической области   экран; обычно называется dpi (точек на дюйм). Например,   «экран низкой плотности» имеет меньше пикселей в данной физической области,   по сравнению с "нормальной" или "высокой" плотностью экрана. Для простоты,   Android группирует все фактические плотности экрана в шесть обобщенных   плотности: низкая, средняя, ​​высокая, сверхвысокая, сверхвысокая и   экстра-экстра-экстра-высокий.

     

Ориентация
Ориентация экрана от точки пользователя   Посмотреть. Это либо пейзаж, либо портрет, что означает, что экран   Соотношение сторон либо широкое, либо высокое соответственно. Знать, что не   только разные устройства работают в разных ориентациях   по умолчанию, но ориентация может измениться во время выполнения, когда пользователь   вращает устройство.

     

Разрешение
Общее количество физических пикселей на   экран. При добавлении поддержки нескольких экранов приложения делают   не работать напрямую с разрешением; приложения должны быть обеспокоены   только с размером экрана и плотностью, как указано в обобщенном   размер и плотность группы.

     

Плотно-независимый пиксель (dp)
Виртуальный   Пиксельная единица измерения, которую следует использовать при определении макета пользовательского интерфейса, чтобы выразить   Размеры или расположение макета не зависят от плотности.   Плотно-независимый пиксель эквивалентен одному физическому пикселю на 160   Экран dpi, который является базовой плотностью, принятой системой для   Экран средней плотности. Во время выполнения система прозрачно обрабатывает   любое масштабирование дп единиц, по мере необходимости, исходя из фактической плотности   используемого экрана. Преобразование единиц измерения в пиксели экрана   просто:    px = dp * (dpi / 160).   Например, на экране с разрешением 240 т /д, 1 дп   равен 1,5 физических пикселей. Вы всегда должны использовать дп единиц, когда   определение интерфейса вашего приложения, чтобы обеспечить правильное отображение вашего интерфейса на   экраны с различной плотностью.

Если вы серьезно относитесь к разработке приложения для Android для нескольких типов устройств, вам следует хотя бы раз прочитать документ по поддержке экранов. Кроме того, всегда полезно знать фактическое количество активных устройств, которые имеют определенный экранфигурации.

657
2018-11-27 09: 16: 27Z
  1. Итак, если вы используете dp для кнопки и sp для размера шрифта текста кнопки, что произойдет, когда пользователь начнет масштабирование? Текст будет увеличен, но будет ли кнопка приспосабливаться к этому при увеличении?
    2012-10-05 09: 35: 46Z
  2. @ Wytze, нет. Для вещей, где подгонка текста может быть проблемой, я бы просто использовал dip, чтобы вещи не переполнялись.
    2013-07-13 17: 39: 50Z
  3. @ Wytze А я, наоборот, использую sp как для текста, так и для всего, что оно содержит. Например, если у меня есть кнопка с фиксированным размером и текстом внутри нее, я бы назначил размер кнопки в sp, чтобы она также увеличивалась при необходимости. В противном случае, пользователь будет раздражен, что он увеличил размер текста, и он не увеличился. Разумеется, макет должен быть достаточно гибким, чтобы это было возможно.
    2013-10-14 23: 15: 04Z
  4. Если ваши дизайнеры не оставят места для текстовых элементов для масштабирования в соответствии с размером sp, одним из вариантов является переключение на любой макет, который вы использовали бы для более узкого устройства, затем масштабируйте все равномерно (DisplayMetrics.scaledDensity /DisplayMetrics.density).
    2014-07-16 17: 52: 16Z
  5. @ Сэм, отсутствие свободного места также приведет к проблемам во время i18n
    2018-07-16 09: 14: 30Z

Я подробнее расскажу, как именно dp конвертируется в px:

  • При работе на устройстве mdpi изображение 150 x 150 px займет 150 * 150 dp места на экране.
  • При работе на устройстве hdpi изображение 150 x 150 px займет 100 * 100 dp места на экране.
  • При работе на устройстве xhdpi изображение 150x150 px займет 75 * 75 dp места на экране.

С другой стороны: скажем, вы хотите добавить изображение в ваше приложение, и вам нужно, чтобы оно заполнило элемент управления 100 * 100 dp. Вам потребуется создать изображения разного размера для поддерживаемых размеров экрана:

  •  100 * 100 px изображений для mdpi
  •  150 * 150 px изображений для HDDP
  •  200 * 200 px изображений для xhdpi
325
2018-04-06 19: 03: 33Z
  1. Как рассчитать пиксели для hdpi, ldpi, mdpi и т. д. Я слышал, что мы используем эту формулу..px = dp * (dpi /160); Можете ли вы объяснить мне с этой формулой плз?
    2015-03-07 12: 25: 35Z
  2. @ Rakeshpatanga При плотности 160 dpi 1 px = 1 dp (физический пиксель и абстракция dp одинаковы). То есть для одного dp имеем (1) * (160/160) = 1, или ровно 1 px. При более высокой плотности, равной 320 точек на дюйм, одно значение dp составляет (1) * (320/160) = 2 пикселя, а два значения dp составляют (2) * (320/160) = 4 пикселя.
    2017-09-06 14: 32: 17Z
  3. Выровняйте их в моноширинном пространстве, чтобы увидеть: | 1dp |, | ___ | ___ | 160, | _ | _ | _ | _ | 320 (ставить разрывы строк после запятых). | _ | = 1 p i x эл.
    2017-09-06 14: 49: 48Z
  4. re "Вам потребуется создать изображения разного размера для поддерживаемых размеров экрана:" Это зависит. Для небольших высококонтрастных изображений, например, Для значков целесообразно создать хотя бы наименьший размер (чтобы он был четким) и довольно большой размер (чтобы большие версии не выглядели размытыми). Но даже для значков вы можете позволить одному изображению масштабироваться в диапазоне размеров при более высокой плотности. Для фотографий просто укажите область отображения, которую вы хотите заполнить, и используйте масштабирование устройства.
    2018-05-22 11: 51: 30Z

точек Пиксели - точка на шкале соответствует фактическим пикселям на экране.

в Дюймы - в зависимости от физического размера экрана.

мм Миллиметры - в зависимости от физического размера экрана.

пт Точки - 1/72 дюйма в зависимости от физического размера экрана.

дп Плотность - независимые пиксели - абстрактная единица измерения, основанная на физической плотности экрана. Эти единицы относятся к экрану с разрешением 160 точек на дюйм, поэтому один dp - это один пиксель на экране с разрешением 160 точек на дюйм. Отношение dp к пикселю будет меняться в зависимости от плотности экрана,  но не обязательно в прямой пропорции.  Примечание. Компилятор принимает dip и dp, хотя dp более соответствует sp.

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

Возьмем пример двух экранов одинакового размера, но один имеет плотность экрана 160 точек на дюйм (точек на дюйм, т.е. пикселей на дюйм), а другой - 240 точек на дюйм.

 
                          Lower resolution   screen          Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent Pixels          240                               240
(“dip” or “dp” or “dps”)

Scale-independent pixels 
 (“sip” or “sp”)                  Depends on user font size settings    same
    
269
2018-11-27 10: 48: 04Z

Кроме того, вы должны четко понимать следующие понятия:

Размер экрана:

  

Фактический физический размер, измеренный по диагонали экрана. Для простоты Android группирует все фактические размеры экрана в   четыре обобщенных размера: маленький, нормальный, большой и очень большой.

Плотность экрана:

  

Количество пикселей в физической области экрана; обычно называется dpi (точек на дюйм). Например,   «экран низкой плотности» имеет меньше пикселей в данной физической области,   по сравнению с "нормальной" или "высокой" плотностью экрана. Для простоты,   Android группирует все фактические плотности экрана в четыре обобщенных   плотности: низкая, средняя, ​​высокая и сверхвысокая.

Ориентация:

  

Ориентация экрана с точки зрения пользователя. Это либо пейзаж, либо портрет, что означает, что   Соотношение сторон экрана - широкий или высокий соответственно. Знать   что не только разные устройства работают в разных ориентациях   по умолчанию, но ориентация может измениться во время выполнения, когда пользователь   поворачивает устройство.

Разрешение:

  

Общее количество физических пикселей на экране. При добавлении поддержки нескольких экранов приложения не работают напрямую   с разрешением; приложения должны касаться только экрана   размер и плотность, как указано в обобщенном размере и плотности   группы. р>

Плотно-независимый пиксель (dp):

  

Виртуальный пиксельный блок, который следует использовать при определении макета пользовательского интерфейса, чтобы выразить размеры макета или   положение в зависимости от плотности. Плотно-независимый пиксель   эквивалентен одному физическому пикселю на экране с разрешением 160 точек на дюйм, который является   базовая плотность, принятая системой для экрана средней плотности.   Во время выполнения система прозрачно обрабатывает любое масштабирование dp   единиц, при необходимости, исходя из фактической плотности используемого экрана.   Преобразование единиц dp в пиксели экрана очень просто: px = dp * (dpi   /160). Например, на экране с разрешением 240 т /д 1 дп означает 1,5 физических   пиксели. Вы должны всегда использовать дп единиц при определении вашего   интерфейс приложения, чтобы обеспечить правильное отображение вашего интерфейса на экранах с   разные плотности.

Ссылка: сайт разработчиков Android

    
216
2018-11-27 13: 10: 53Z

dp - это dip. Используйте его для всего (поля, отступы и т. Д.).

Используйте sp только для {text-size}.

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

Обратите внимание на разницу между px, dp и sp на экранах разных размеров.

Введите описание изображения здесь

Источник: Программирование на Android: руководство по ранчо большого ботаника

    
190
2015-08-11 20: 53: 46Z

Я рассчитал приведенную ниже формулу, чтобы сделать преобразования dpi в dp и sp введите описание изображения здесь

    
135
2017-04-06 10: 24: 04Z
  1. Это должен быть ppi вместо dpi
    2014-01-29 17: 02: 47Z

Определения

px или точка - это пиксель на физическом экране.

dpi - это пиксели на дюйм на физическом экране, которые представляют собой плотность экрана.

Android предоставляет имена псевдонимов для нескольких плотностей

  • ldpi (низкий) ~ 120dpi
  • mdpi (средний) ~ 160 dpi
  • hdpi (высокое) ~ 240 dpi
    • большинство устройств в 2015 году здесь
  • xhdpi (сверхвысокий) ~ 320 dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (экстра-сверх-высокий) ~ 480 точек на дюйм
    • Nexus 5
  • xxxhdpi (экстра-экстра-экстра-высокий) ~ 640 точек на дюйм

dip или dp являются независимыми от плотности пикселями , т.е. они соответствуют большему или меньшему количеству пикселей в зависимости от физической плотности.

  • 1dp = 1px для mdpi

 введите описание изображения здесь

sp или sip является независимым от масштаба пикселем . Они масштабируются, если в Настройки > включена опция Большой текст . Доступность

  • 1sp = 1dp
  • 1sp = 1.2dp с расширенным доступом Большой текст

Что использовать?

  

Используйте sp для размера текста.

     

Используйте dp для всего остального.

    
128
2016-03-02 09: 39: 05Z

Источник 1

Источник 2

Источник 3 : (данные из источника 3 приводится ниже)

  

Это значения измерений, определенные в XML. Размер указан   с номером, за которым следует единица измерения. Например: 10px, 2in,   5SP. Android поддерживает следующие единицы измерения:

     

дп

     

Плотно-независимые пиксели - абстрактная единица, основанная на   физическая плотность экрана. Эти единицы относительно 160 точек на дюйм   (точек на дюйм) экран, на котором 1dp примерно равен 1px. когда   работает на экране с более высокой плотностью, количество пикселей, используемых для рисования   1dp увеличивается с коэффициентом, соответствующим dpi экрана.   Аналогично, при использовании экрана с меньшей плотностью количество используемых пикселей   для 1dp уменьшается. Соотношение dp-to-pixel будет меняться с   плотность экрана, но не обязательно в прямой пропорции. Используя дп   Единицы (вместо пикселей) это простое решение для создания представления   Размеры в вашем макете изменить размер для другого экрана   плотности. Другими словами, это обеспечивает последовательность для реального мираразмеры элементов вашего интерфейса на разных устройствах.

     

зр

     

Пиксели, не зависящие от масштаба - это похоже на единицу измерения dp, но также   масштабируется по предпочтению размера шрифта пользователя. Рекомендуется использовать   этот блок при указании размеров шрифта, поэтому они будут скорректированы для   плотность экрана и предпочтения пользователя.

     

пт

     

Точки - 1/72 дюйма в зависимости от физического размера экрана.

     

точек

     

Pixels - соответствует фактическим пикселям на экране. Эта единица   мера не рекомендуется, потому что фактическое представление может варьироваться   через устройства; каждое устройство может иметь разное количество пикселей на   дюймов и может иметь больше или меньше доступных пикселей на экране.

     

мм сильный> р>      

Миллиметры - в зависимости от физического размера экрана.

     

в

     

Дюймы - в зависимости от физического размера экрана.

Примечание. Измерение - это простой ресурс, на который ссылается значение, указанное в атрибуте имени (а не в имени файла XML). Таким образом, вы можете комбинировать ресурсы измерений с другими простыми ресурсами в одном XML-файле под одним элементом.

    
122
2018-11-27 09: 15: 09Z
  1. Кроме того: какова дополнительная ценность этого ответа? Кажется, там нет ничего, что еще не было упомянуто в других ответах.
    2013-12-27 09: 28: 25Z

По сути, единственный раз, когда применяется px, это один px, и это если вы хотите, чтобы на экране был ровно один пиксель, как в случае делителя:

На > 160 dpi вы можете получить 2-3 пикселя,

При > 120 dpi оно округляется до 0.

    
110
2018-03-31 10: 05: 28Z
  1. getDimensionPixelOffset округляет, getDimensionPixelSize округляет.
    2017-05-28 22: 24: 38Z

точек

Pixels - соответствует фактическим пикселям на экране.

дп или дип

Плотно-независимые пиксели - абстрактная единица измерения, основанная на физической плотности экрана. Эти единицы относятся к экрану с разрешением 160 точек на дюйм, поэтому на экране с разрешением 160 точек на дюйм один пиксель составляет один пиксель.

Использование dp:

Плотность независимости - Ваше приложение достигает «независимости от плотности», когда оно сохраняет физический размер (с точки зрения пользователя) элементов пользовательского интерфейса при отображении на экранах с различной плотностью. (т.е.) изображение должно выглядеть одинаково (не увеличено или не уменьшено) на разных типах экранов.

зр

Пиксели, не зависящие от масштаба - это похоже на единицу измерения dp, но также масштабируется в соответствии с предпочтением размера шрифта пользователя.

http://developer.android.com/guide/topics/resources/more -resources.html # Dimension

    
93
2013-04-02 06: 35: 37Z

Где использовать что & связь между px и amp; дп?

Плотно-независимый пиксель (dp)

Виртуальный пиксельный блок, который следует использовать при определении макета пользовательского интерфейса, чтобы выразить размеры или положение макета независимым от плотности способом. Как описано выше, независимый от плотности пиксель эквивалентен одному физическому пикселю на экране с разрешением 160 точек на дюйм, который является базовой плотностью, принятой системой для экрана «средней» плотности. Во время выполнения система прозрачно обрабатывает любое масштабирование единиц измерения dp по мере необходимости на основе фактической плотности используемого экрана. Преобразование единиц измерения в пиксели экрана простой:

px = dp * (dpi /160).

Например, на экране с разрешением 240 точек на дюймen, 1 dp равен 1,5 физических пикселей. Вы должны всегда использовать dp-единицы при определении пользовательского интерфейса вашего приложения, чтобы правильное отображение вашего интерфейса на экранах с различной плотностью.

Понимание пикселя в dp и наоборот очень важно (особенно для точного определения значений dp для творческой команды)

 
dp = px * 160 / dpi

MDPI = 160 dpi || Therefore, on MDPI 1 px = 1 dp
For example, if you want to convert 20 pixel to dp, use the above formula,
dp = 20 * 160 / 160 = 20.
So, 20 pixel = 20 dp.

HDPI = 240 dpi - So, on HDPI 1.5 px = 1 dp
XHDPI = 320 dpi - So, on XHDPI 2 px = 1 dp
XXHDPI = 480 dpi - So, on XXHDPI 3 px = 1 dp

For example, let us consider Nexus 4.
If 24 pixels to be converted to dp and if it is a Nexus 4 screen, developers can
convert it to dp easily by the following calculation :
dp = 24 * 160 / 320 = 12 dp
Screen dimension:
768 x 1280 pixel resolution (320 ppi or 320dpi)
Optional (screen size):
 4.7" diagonal
  • Попробуйте получить все значения пикселей в четных числах от творческой группы. В противном случае при умножении на 0,5 произойдет потеря точности.

ПВ

Это объяснено выше. Старайтесь избегать в макете файлов. Но в некоторых случаях требуется px. например, разделительная линия ListView. px лучше использовать для выделения однопиксельной строки в качестве разделителя для всех разрешений экрана.

зр

Используйте sp для размеров шрифта. Тогда при изменении размера шрифтов устройства будет изменяться только шрифт внутри приложения (т. Е. Display -> Gonts on Device). Если вы хотите сохранить шрифт статического размера внутри приложения, вы можете указать размер шрифта в dp. В таком случае это никогда не изменится. Разработчики могут получить такое требование для некоторых конкретных экранов, для этого разработчики могут использовать dp вместо sp. Во всех остальных случаях рекомендуется sp.

    
91
2015-06-06 14: 31: 47Z

Вы можете увидеть разницу между px и dp из рисунка ниже, а также обнаружить, что px и dp не могут гарантировать одинаковые физические размеры на разных экранах.

введите описание изображения здесь

    
83
2015-02-13 18: 50: 12Z
  1. @ EnesBattal, я думаю, потому что dp не является точным физическим размером, это приблизительное значение. Цитата из CapTech: «dp - это единица, не зависящая от плотности, однако физический размер одного« dp »только приблизительно одинаков для каждой плотности экрана. В дюйме приблизительно 160« dp ». Коэффициент масштабирования, в зависимости от в области плотности устройства, применяется для преобразования «dp» в число пикселей с разрешением 160 точек на дюйм. Число пикселей, на которое преобразуется один «dp», изменяется в зависимости от плотности пикселей на экране и области плотности, на которую устройство падает. в ".
    2015-09-17 14: 12: 16Z
  2. @ RuchirBaronia, я думаю, что DP или DIP все еще находятся внутри apk, потому что apk еще не знает, с какой плотностью экрана он будет работать, поэтому независимость устройства должна быть сохранена.
    2015-11-25 18: 18: 55Z

Все, что связано с размером текста и внешним видом, должно использовать sp или pt. Принимая во внимание, что все, что связано с размером элементов управления, макетов и т. Д., Должно использоваться с dp.

Вы можете использовать как dp, так и dip на своих местах.

    
74
2015-07-01 14: 30: 11Z

Я бы использовал только дп.

Существует много разговоров об использовании sp для размеров шрифта, и хотя я ценю это, я не думаю, что это правильно с точки зрения дизайна. Вы можете в конечном итоге нарушить свой дизайн, если у пользователя будет какой-то неудачный выбор размера шрифта, и пользователь в итоге будет винить приложение , а не свой собственный жизненный выбор.

Кроме того, если вы возьмете приложение sp-font на планшете с разрешением 160 точек на дюйм, вы обнаружите, что все масштабируется ... но ваш шрифт будет выглядеть крошечным по сравнению с ним. Это не очень хорошо выглядит.

Хотя идея «sp» шрифтов имеет хорошее сердце, это плохая идея. Придерживайтесь дп для всего.

    
65
2015-06-06 14: 42: 19Z
  1. Вы знаете, что масштабный коэффициент шрифта, примененный к sp, является фактором, верно? Все, что влияет на dpтакже повлияет на sp. Тем не менее, по-прежнему предпочтительнее указывать размеры шрифта, используя dp вместо sp, если ваш макет очень плотный и большие размеры не подходят - лучше, чтобы текст был меньше, чем того хочет пользователь, в полностью испорченном макете. Но в первую очередь вы всегда должны стремиться соблюдать предпочтения размера шрифта пользователя - даже самый большой параметр не слишком большой.
    2017-02-26 22: 06: 15Z

sp = масштабно-независимый пиксель

dp = dip = плотность независимых пикселей

dpi = точек на дюйм

  

Мы должны избегать использования sp .

     

Мы должны использовать dp для поддержки нескольких экранов.

Android поддерживает разные разрешения экрана

  • ldpi (низкая) ~ 120 dpi
  • mdpi (средний) ~ 160 dpi
  • hdpi (высокая) ~ 240 т /д
  • xhdpi (сверхвысокий) ~ 320 т /д
  • xxhdpi (экстра-сверх-высокий) ~ 480 т /д
  • xxxhdpi (экстра-экстра-экстра-высокий) ~ 640 т /д

Устройство с разрешением 120 dp ldpi имеет размер 120 пикселей на 1 дюйм.

То же самое для других плотностей ...

Мы, как разработчики программного обеспечения, должны использовать эту формулу преобразования:

  

pixel = dp * (плотность /160)

Таким образом, 1 dp устройства с разрешением 240 т /д будет иметь = 1 * (240/160) = 3/2 = 1,5 пикселя.

И 1 dp устройства с разрешением 480 т /д будет иметь = 1 * (480/160) = 3 пикселя.

Используя эти 1,5 и 3 пикселя знания, инженер-программист может создавать макеты для разных плотностей.

Чтобы проверить параметры экрана любого устройства:

 
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

Toast.makeText(
    this,
    "4:" + metrics.heightPixels + "," + metrics.density + ","
    + metrics.densityDpi, Toast.LENGTH_LONG).show();
    
61
2018-07-27 07: 02: 15Z
  1. Очень хорошее руководство для понимания: http: /vinsol.com/blog/2014/11/20/tips-for-designers-from-a-developer
    2015-03-16 10: 06: 05Z
  2. "Мы должны избегать использования sp" Почему это так? Вы должны использовать sp при работе с размерами шрифта, поскольку он учитывает предпочтительный размер текста пользователя, developer.android.com/training/multiscreen/screendensities.html
    2015-03-20 10: 05: 57Z
  3. Я ответил относительно перспективы макета. Пожалуйста, ознакомьтесь с предоставленной ссылкой ", поэтому вы должны использовать эту единицу измерения при определении размера текста (но не для размеров макета). «
    2015-03-20 10: 22: 31Z
  4. Вопрос был "Разница между px, dp, dip и sp в Android?" Ваш ответ сказал: «Мы должны избегать использования sp». Там не было никакого упоминания о «перспективе макета».
    2015-03-20 10: 28: 32Z
  5. Да .. dp и dip одинаковы ... используются взаимозаменяемо ... Мой ответ решит ваш запрос?
    2015-11-24 06: 36: 23Z

Разницу между dp и sp единицами, упомянутыми как предпочтение размера шрифта пользователя "ответами, скопированными из официальной документации, можно увидеть во время выполнения, изменив параметр Settings->Accessibility->Large Text.

Параметр Large Text заставляет текст увеличиваться в 1.3 раз.

 
private static final float LARGE_FONT_SCALE = 1.3f;

Конечно, это может зависеть от поставщика, поскольку он находится в пакеты /приложения /настройки .

    
58
2013-10-14 08: 44: 10Z

dpi -

  • Точек на дюйм
  • Измерение плотности пикселей на экране.

px - пиксель

  • Для отображения пикселей на экране

pt - баллы

  • Около 1/72 дюйма относительно физического размера экрана.

дюймы  - относительно физического размера экрана (1 дюйм = 2,54 см).

мм-миллиметр  - относительно физического размера экрана.

sp - независимый от масштаба пиксель.

  • На основе предпочтения размера шрифта пользователя.
  • Шрифт должен быть в 'sp'.

dip -

  • dip == dp
  • Плотность, независимый пиксель.
  • Это зависит от плотности экрана.
  • На экране с разрешением 160 т /д 1 дп = 1 пиксель.
  • Используйте dp, кроме размера шрифта текста.

В стандарте используются dp и sp. sp для размера шрифта и dp для всего остального.

Формула для преобразования единиц:

  

px = dp * (dpi /160);

 
Density Bucket -> Screen Display => Physical Size        => Pixel Size                   

ldpi         -> 120 dpi          => 0.5 x 0.5 in         => 0.5 in * 120 dpi = 60x60 px   

mdpi         -> 160 dpi          => 0.5 x 0.5 in         => 0.5 in * 160 dpi = 80x80 px   

hdpi         -> 240 dpi          => 0.5 x 0.5 in         => 0.5 in * 240 dpi = 120x120 px  

xhdpi        -> 320 dpi          => 0.5 x 0.5 in         => 0.5 in * 320 dpi = 160x160 px  

xxhdpi       -> 480 dpi          => 0.5 x 0.5 in         => 0.5 in * 480 dpi = 240x240 px 

xxxhdpi      -> 640 dpi          => 0.5 x 0.5 in         => 0.5 in * 640 dpi = 320x320 px  
    
50
2015-11-24 08: 32: 41Z
  1. Согласно документации, компилятор принимает и «dip», и «dp», хотя «dp» больше соответствует «sp».
    2015-11-24 08: 15: 46Z

Вот формула, используемая Android:

  

px = dp * (dpi /160)

Где dpi - одна из следующих плотностей экрана. Список всех возможных плотностей перейдите сюда

Он определяет константы "DENSITY_ *".

  • ldpi (низкий) ~ 120dpi
  • mdpi (средний) ~ 160 dpi
  • hdpi (высокое) ~ 240 dpi
  • xhdpi (сверхвысокий) ~ 320 точек на дюйм
  • xxhdpi (экстра-сверх-высокий) ~ 480 точек на дюйм
  • xxxhdpi (экстра-экстра-экстра-высокий) ~ 640 точек на дюйм

Взято из здесь .

Это поможет устранить путаницу при переводе между px и dp, если вы знаете свой dpi на экране.

Итак, предположим, что вы хотите изображение с разрешением 60 dp для экрана hdpi, тогда физический размер пикселя составляет 60 dp:

 
px = 60 * (240 / 160)
    
43
2018-03-09 06: 24: 59Z

Размер экрана в Android сгруппирован по категориям small, medium, large, extra large, double-extra и triple-extra. Плотность экрана - это количество пикселей в пределах области (например, дюйма) экрана. Обычно измеряется в точках на дюйм (dpi). Плотность экрана сгруппирована как низкая, средняя, ​​высокая и сверхвысокая. Разрешение - это общее количество пикселей на экране.

  • dp: Плотность, независимая от пикселей, она зависит от плотности экрана. На экране с разрешением 160 точек на дюйм 1 пиксель = 1 пиксель. За исключением размера шрифта, всегда используйте dp.
  • dip: dip == dp. В более ранних версиях Android использовался dip, а затем был изменен на dp.
  • sp: Масштабируемый независимый пиксель, масштабированный в соответствии с предпочтениями размера шрифта пользователя. Шрифты должны использовать sp.
  • px: наш обычный стандартный пиксель, который отображается на пиксель экрана.
  • в дюймах относительно физического размера экрана.
  • мм: миллиметры относительно физического размера экрана.
  • pt: 1/72 дюйма относительно физического размера экрана.

Формула для преобразования между единицами

 
 px = dp * (dpi / 160)

dp to px на устройстве

Следующий пример может помочь лучше понять. Масштабирование происходит в зависимости от размера сегмента 120 (ldpi), 160 (mdpi), 240 (hdpi), 320 (xhdpi), 480 (xxhdpi) и 640 (xxxhdpi). Google предлагает соотношение для проектирования 3: 4: 6: 8: 12 для ldpi: mdpi: hdpi: xhdpi: xxhdpi

Изображение размером 150 на 150 x будет занимать

  
  • Размер экрана 150 dp X 150 dp в мдпи
  •   
  • 100 dp X 100 dp экранного пространства в hdpi
  •   
  • Экран 75 dp X 75 dp в xhdpi
  •   

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

р>

Калькулятор DPI в Java

 
/*
Program output
LDPI: 165.0 X 60.0
MDPI: 220.0 X 80.0
HDPI: 330.0 X 120.0
XHDPI: 440.0 X 160.0
XXHDPI: 660.0 X 240.0
XXXHDPI: 880.0 X 320.0
*/


public class DPICalculator {

private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float XXHDPI = 480;
private final float XXXHDPI = 640;    

private float forDeviceDensity;
private float width;
private float height;

public DPICalculator(float forDeviceDensity, float width, float height){
    this.forDeviceDensity = forDeviceDensity;
    this.width = width;
    this.height = height;
}

public static void main(String... args) {
    DPICalculator dpiCalculator = new DPICalculator(240,330,120);
    dpiCalculator.calculateDPI();
}


private float getPx(float dp, float value) {
    float px = dp * (value / forDeviceDensity );        
    return px;
}

private void calculateDPI() {

    float ldpiW = getPx(LDPI,width);        
    float ldpiH =  getPx(LDPI,height);
    float mdpiW = getPx(MDPI,width);        
    float mdpiH =  getPx(MDPI,height);        
    float hdpiW = getPx(HDPI,width);        
    float hdpiH =  getPx(HDPI,height);       
    float xdpiW = getPx(XHDPI,width);        
    float xdpiH =  getPx(XHDPI,height);
    float xxdpiW = getPx(XXHDPI,width);        
    float xxdpiH =  getPx(XXHDPI,height);
    float xxxdpiW = getPx(XXXHDPI,width);        
    float xxxdpiH =  getPx(XXXHDPI,height);

    System.out.println("LDPI: " + ldpiW + " X " + ldpiH);
    System.out.println("MDPI: " + mdpiW + " X " + mdpiH);
    System.out.println("HDPI: " + hdpiW + " X " + hdpiH);
    System.out.println("XHDPI: " + xdpiW + " X " + xdpiH);
    System.out.println("XXHDPI: " + xxdpiW + " X " + xxdpiH);
    System.out.println("XXXHDPI: " + xxxdpiW + " X " + xxxdpiH);        
   }
}

Дополнительную информацию смотрите по следующей ссылке.

http: //javapapers.com/android/difference-between-dp цинкование-SP-ПВ-в-мм-PT-в-андроид / р>     

43
2018-03-28 10: 24: 14Z
  • px - один пиксель, аналогичный тому, что используется в CSS, JavaScript и т. д.
  • sp - независимые от масштаба пиксели
  • dip - независимые от плотности пиксели

Обычно sp используется для размеров шрифта, а dip используется (также называемый dp) для других.

    
42
2015-06-06 14: 41: 25Z

Пожалуйста, прочитайте ответ от вики сообщества. Ниже упомянута некоторая информация, которую следует учитывать в дополнение к приведенным выше ответам.

sp = масштабно-независимый пиксель

dp = плотность независимых пикселей

dpi = плотность пикселей

Я прошел через приведенные выше ответы ... не нашел их совершенно правильными. sp для размера текста, dp для границ макета - стандарт. Но sp для размера текста нарушит макет, если его использовать небрежно на большинстве устройств.

sp - размер текста устройства, а dp - стандарт плотности устройства (никогда не меняйте в устройстве). Скажем, текст 100sp может занимать 80% экрана или 100% экрана в зависимости от размера шрифта, установленного в устройстве

 введите описание изображения здесь

Вы также можете использовать sp для границ макета, это будет работать :) Стандартное приложение не использует sp для всего текста

Используйте sp и dp для размера текста с учетом UX.

  • Не используйте sp для текста на панели инструментов (можно использовать размеры Android, доступные для разных размеров экрана с помощью dp)
  • Не используйте sp для текста в маленьких ограниченных кнопках, очень маленького текста и т. д.

Некоторые люди используют огромный размер шрифта в своем телефоне для большей читабельности, поэтому небольшая жестко закодированный размер текста будет проблемой UX. Поместите sp для текста, где это необходимо, но убедитесь, что он не нарушит макет.

Аналогичным образом, если у вас есть одно приложение, поддерживающее все измерения, добавление ресурсов xxxhdpi значительно увеличивает размер приложения. Но теперь телефоны xxxhdpi распространены, поэтому мы должны включить активы xxxhdpi по крайней мере для значков на боковой панели, панели инструментов и нижней панели. Лучше перейти к векторным изображениям, чтобы получить однородные и более качественные изображения для всех размеров экрана.

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

Обратитесь к сайту разработчиков Google для получения информации о размерах экрана и базовой плотности для Android. https://developer.android.com/training/multiscreen/screendensities

    
38
2019-05-16 10: 37: 03Z

Я наткнулся на хорошую статью о разработке пользовательского интерфейса приложений Android для разных разрешений экрана, и я хотел бы оставить ее здесь только для тех, кто ищет в этой области. Да, я знаю, что это как-то описано в Google Docs (и упоминается в постах выше), я читал это, но это было нехорошо для меня (да, я могу быть слишком глупым)). Мне оставалось неясным, как создавать макеты, способные работать с экранами разного размера. Я ненавижу концепцию DP и так далее, когда мне нужно реализовать «гибкий» макет интерфейса для разных экранов. (Привет, разработчики iOS - да, вы правы, это концепция раскадровки).

Android имеет неплохую концепцию пользовательского интерфейса, но, к сожалению, не имеет функций раскадровки iOS. Разработка гибкого пользовательского интерфейса в Android - вещь не из легких (в лучшем случае).

Вот статья, которая помогла мне понять, что делать в Android, чтобы создавать макеты для экрана разных размеров:

Блог JMSTUDIO: - Определите размер экрана приложения Android

  

Как разработать пользовательский интерфейс для приложений Android для экрана другого размера

     

Чтобы разработать пользовательский интерфейс приложения для экрана разных размеров, наш первоначальный дизайн должен   соответствовать минимально необходимому пространству для каждого размера экрана. Android определяет   минимальный размер (в dp) для каждого обобщенного типа экрана. Вот   Размер экрана Android гуideline.    Минимальный размер экрана для Android в dp   Когда мы получаем размер экрана в dp, нам не хватает дизайна   пользовательский интерфейс приложения Android. Для каждого размера экрана нам нужно подготовить графику   и растровые изображения для каждой плотности. Вот плотность экрана Android   руководство.    «Руководство

     

Для простоты расчета мы можем использовать коэффициент масштабирования 3: 4: 6: 8 между   четыре обобщенные плотности. Если мы создадим картинку 36 × 36 пикселей для   устройство ldpi, размер изображений остальных плотностей будет 48 × 48 для mdpi,   72 × 72 для HDDP и 96 × 96 для HDPI.

     

Как разработать пользовательский интерфейс приложений Android в Photoshop

     

У многих дизайнеров возникают проблемы при разработке пользовательского интерфейса приложения для Android в фотошопе или другом пикселе.   основанные инструменты графического дизайна из-за независимой от плотности единицы, dp.   Дизайнеры не знают, как отобразить dp на пиксель. Google также не дает   четкое руководство по дизайну пользовательского интерфейса Android для них, хотя они дают основную   формула для дп и пиксельного перевода.

     

В соответствии с определением Android, 1pd равно 1px для устройства с разрешением 160 точек на дюйм (mdpi).   Поэтому мы хотим разработать приложение для Android для устройства Android с большим   Плотность MDDP, мы можем определить наш размер пользовательского интерфейса в пикселях, как 960 пикселей в ширину   и 720px в высоту; Следуя тому же правилу отображения, мы можем получить   Следующие рекомендации по размеру пользовательского интерфейса Android App:

     

 Размер экрана приложения Android в пиксельных указаниях

ДОБАВЛЕНО . Если вы также заинтересованы в «гибком» пользовательском интерфейсе, взгляните на эту библиотеку: Android SDK, который предоставляет новый размер блока - sdp (масштабируемый дп). Эта единица измерения размера зависит от размера экрана (об этом также упоминается в ответе, около SDP библиотеки)

ADDED2 Google наконец-то понял полезность концепции пользовательского интерфейса iOS Storeboard, и вот ConstraintLayout для мира Android: Создать отзывчивый пользовательский интерфейс с ConstraintLayout

    
36
2018-09-14 15: 03: 37Z

1) dp: (density independent pixels)

Количество пикселей, представленных в одной единице dp, будет увеличиваться с увеличением разрешения экрана (когда у вас больше точек /пикселей на дюйм). И наоборот, на устройствах с более низким разрешением количество пикселей, представленных в единицах dp, будет уменьшаться. Поскольку это относительная единица, она должна иметь базовую линию для сравнения. Эта базовая линия - экран с разрешением 160 точек на дюйм. Это уравнение: px = dp * (dpi / 160).


2) sp: (scale independent pixels)

Это устройство масштабируется в соответствии с dpi экрана (аналогично dp), а также предпочтениями пользователя по размеру шрифта.


3) px: (pixels)

Фактические пиксели или точки на экране.


Для получения более подробной информации вы можете посетить

  

Руководство разработчика Android > Dimension
Руководство разработчика Android > Экраны

    
29
2018-04-02 13: 58: 40Z

Размер экрана в Android сгруппированы по категориям ldpi, mdpi, hdpi, xhdpi, xxhdpi и xxxhdpi. Плотность экрана - это количество пикселей в пределах области (например, дюйма) экрана. Обычно измеряется в точках на дюйм (dpi).

PX(Pixels):

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

DP/DIP(Density pixels / Density independent pixels):

  • dip == dp. В более ранних версиях Android использовался dip, а затем был изменен на dp. Это альтернатива px.

  • Обычно мы никогда не используем px, потому что это абсолютное значение. Если вы используете px для установки ширины или высоты,и если это приложение загружается на устройства с другим размером экрана, то это представление не будет растягиваться в соответствии с исходным размером экрана.

  • dp настоятельно рекомендуется использовать вместо px. Используйте dp, если вы хотите упомянуть ширину и высоту для роста & динамическое сжатие в зависимости от размеров экрана.

  • если мы дадим dp/dip, Android автоматически рассчитает размер пикселя на основе экрана размером 160 пикселей.

SP(Scale independent pixels):

  • масштабируется на основе предпочтения размера шрифта пользователя. Шрифты должны использовать sp.

  • при упоминании размеров шрифта, подходящих для разных размеров экрана, используйте sp. Это похоже на dp. Используйте sp, особенно для увеличения размера шрифта & динамическое сжатие в зависимости от размеров экрана

Документация Android гласит:

  

при указании размеров всегда используйте dp или sp единиц. А dp это   независимый от плотности пиксель, который соответствует физическому размеру   пиксель на 160 dpi. sp - это тот же базовый блок, но масштабируется   предпочитаемый пользователем размер текста (это независимый от масштаба пиксель), так что вы   следует использовать эту единицу измерения при определении размера текста

    
28
2015-10-07 08: 47: 56Z

Экран мобильного телефона состоит из тысяч крошечных точек, известных как пиксели (px) . Пиксель - это самый маленький элемент, который делает изображение. Чем больше пикселей создает изображение или текст, тем резче оно становится, и экран смартфона становится более читабельным.

Разрешение экрана измеряется количеством пикселей на экране. Разрешение экрана является широко используемой спецификацией при покупке устройства, но на самом деле это не так полезно при разработке для Android, потому что представление об экранах в виде пикселей игнорирует понятие физического размера, что для сенсорного устройства действительно очень важно. р>

Независимый от плотности пиксель (dp или dip) позволяет разработчику создавать ресурсы, которые отображаются ожидаемым образом, независимо от разрешения или плотности целевого устройства.

Пиксель, независимый от плотности (dp или dip), равен одному пикселю при базовой плотности или 160 dpi (точек на дюйм).

1 px /1dp = 160 dpi /160 dpi

2 px /1dp = 320 т /д (2x) /160 т /д

, где р>

dpi - количество точек на дюйм

Таким образом, при разрешении 320 т /д 1 дп равен 2 пикселям.

Формула р>

px /dp = dpi /160dpi

Количество точек на дюйм (dpi) - это показатель резкости (то есть плотности точек с подсветкой) на экране дисплея. Количество точек на дюйм для данного разрешения изображения будет отличаться в зависимости от общего размера экрана, поскольку одинаковое количество пикселей распределяется по разному пространству.

Работа с независимыми от плотности пикселями помогает нам справиться с ситуацией, когда у вас есть два устройства с одинаковым разрешением пикселей, но разным объемом пространства. Предположим, что в данном случае планшет и телефон имеют одинаковое разрешение пикселей 1280 на 800 пикселей (160 точек на дюйм) и 800 на 1280 пикселей (320 точек на дюйм) соответственно.

Теперь, когда планшет имеет базовую плотность (160 точек на дюйм), его физические и независимые от плотности размеры пикселей одинаковы, 1280 на 800. Телефон с другой стороны имеет более высокую плотность пикселей, поэтому он имеет вдвое меньше плотности, не зависящей от плотности. пиксели как физические пиксели. Таким образом, телефон имеет плотность пикселей 400 на 640 независимых пикселей. Поэтому использование независимого от плотности пикселя позволяет мысленно представить, что на планшете гораздо больше места, чем на телефоне.

Аналогичным образом, если у вас есть два устройства с одинаковым размером экрана, но разной плотностью пикселей, скажем, одно - 800 на 1280 пикселей (320 точек на дюйм), а другое - 400 на 640 пикселей (160 точек на дюйм), нам не нужно определить совершенно разные макеты для этих двух устройств, поскольку мы можем измерить активы с точки зрения плотности, независимого пикселя, который одинаков для обоих устройств.

800 на 1280 пикселей (320 точек на дюйм) = 400 на 640 пикселей с независимой плотностью (dp)

400 на 640 пикселей (160 точек на дюйм) = 400 на 640 пикселей, независимых от плотности (dp)

Независимые от масштаба пиксели (sp) - предпочтительная единица измерения размера шрифта. В целях обеспечения доступности Android позволяет пользователям настраивать размер шрифта своего устройства. Пользователи, у которых возникают проблемы с чтением текста, могут увеличить размер шрифта своего устройства. Обычно вы можете найти эту опцию в настройках дисплея на вашем телефоне или планшете под размер шрифта. Это часто также доступно через настройки доступности.

С пикселями, не зависящими от масштаба, 16 sp - это то же самое, что 16 dp, если размер шрифта устройства нормальный или 100%. Но когда размер шрифта устройства большой, например 125%, 16 sp будетnslate до 20 dp или 1,25 раза 16.

Если вы используете dp в качестве единицы для размера шрифта, то этот фрагмент текста имеет определенный физический размер, независимо от того, настроил ли пользователь размер шрифта устройства. Использование юнитов sp сделает лучший опыт для людей с нарушениями зрения.

Справка : Udacity , Google

    
21
2017-10-18 05: 31: 24Z
  

sp: масштабный независимый пиксель

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

  

px: пиксель или элемент изображения - это единственная точка на экране

    
17
2018-03-09 08: 59: 48Z

Прежде чем ответить на этот вопрос, позвольте мне сначала уменьшить количество единиц. Итак, начнем: dp или dip одинаковы и известны как независимые от плотности пикселей .

1. px - обозначает пиксели. Пиксели - это одна точка, точка на экране. Как правило, в мобильной индустрии он измеряется в ppi (пикселей на дюйм). Разрешение экрана прямо пропорционально ppi, чем больше число пикселей на дюйм, тем выше разрешение экрана.

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

На рисунках ниже показано разрешение одного и того же изображения на разных телефонах -

  • Телефон с высоким разрешением экрана

     Введите описание изображения здесь

  • Телефон с низким разрешением экрана

     Введите описание изображения здесь

2. dip или dp - абстрактная единица измерения, основанная на физической плотности экрана. Эти единицы измерения относятся к экрану 160 точек на дюйм, поэтому один dp равен одному пикселю на экране 160 точек на дюйм. Отношение dp к пикселю будет меняться в зависимости от плотности экрана, но не обязательно в прямой пропорции. «Независимость от плотности» относится к равномерному отображению элементов пользовательского интерфейса на экранах с различной плотностью.

  • Изображение, которое показывает 80px (изображение слева) и 80 dp (изображение справа) . Оформить заказ разницы.

 Введите описание изображения здесь

dp равен одному физическому пикселю на экране с плотностью 160 . Чтобы рассчитать дп:

dp = (ширина в пикселях * 160) /плотность экрана

3. sp - обозначает масштабируемые пиксели. Обычно sp используется для текстов в пользовательском интерфейсе, а sp сохраняет настройки шрифта. Например, если пользователь выбрал шрифт большего размера, чем 30 sp , он автоматически масштабируется, чтобы выглядеть большим в соответствии с предпочтениями пользователя.

    
14
2017-12-07 17: 58: 56Z
  1. вы перепутали с Phone with low screen resolution с соответствующим изображением
    2017-12-04 12: 30: 52Z
  2. @ RoyiNamir Не могли бы вы объяснить свой комментарий или, если возможно, предложить изменить
    2017-12-07 13: 23: 30Z
  3. это телефон с высоким разрешением. не ниже: i.imgur.com/tnu87VR.jpg
    2017-12-07 13: 24: 34Z

Я хочу предоставить простой способ понять dp. На самом деле, я думаю, что dp - самый простой для понимания. dp - это просто единица физической длины. Это такое же измерение, как mm или inch. Нам просто удобно писать 50dp, 60dp, а не 50/160 inch или 60/160 inch, потому что один dp - это всего лишь 1/160 inch независимо от размера экрана или разрешения.

Единственная проблема заключается в том, что андроид dpi на некоторых экранах не точный. Например, экран, классифицированный на 160 dpi, может действительно иметь 170 dpi. Таким образом, результат вычисления dp является нечетким. Это должно быть примерно так же, как 1/160 inch.

    
13
2016-04-02 03: 35: 21Z

SDP - единица масштабируемого размера - в основном это не единица, а ресурсы измерения для экрана другого размера.

Попробуйте sdp библиотеку от Intuit. Это очень удобно для решения проблем устройства, и вы можете быстро поддерживать несколько экранов .

Использование р>

android:paddingBottom="@dimen/_15sdp" для положительного и android:layout_marginTop="@dimen/_minus10sdp" для отрицательного SDP SDP

Он имеет эквивалентное значение в dp для каждого размера в values-sw<N>dp папках (sw = smalllestWidth).

Внимание

Используйте это осторожно! В большинстве случаев вам все равно нужно разработать другой макет для планшетов.

Пример р>  

<LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_marginTop="@dimen/_minus10sdp"
          android:paddingBottom="@dimen/_15sdp"
          android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="♡"
                    android:textColor="#ED6C27"
                    android:textSize="@dimen/_70sdp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:includeFontPadding="false"
                    android:text="U"
                    android:textColor="@android:color/black"
                    android:textSize="@dimen/_70sdp" />
            </LinearLayout>

Вы можете использовать db для размера текста, но я предпочитаю ssp для размера текста.

Для получения дополнительной информации посетите страницу библиотеки GitHub .

    
13
2017-10-18 05: 26: 33Z
источник размещен Вот