Dip что это android

Единицы измерения

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

Android поддерживает несколько стандартных единиц измерения. Вкратце перечислим их.

  • px (pixels) — пиксели. Точки на экране — минимальные единицы измерения;
  • dp (density-independent pixels) — независимые от плотности пиксели. Абстрактная единица измерения, основанная на физической плотности экрана с разрешением 160 dpi. В этом случае 1dp = 1px;
  • dip — синоним для dp. Иногда используется в примерах Google;
  • sp (scale-independent pixels) — независимые от масштабирования пиксели. Допускают настройку размеров, производимую пользователем. Полезны при работе с шрифтами;
  • in (inches) — дюймы, базируются на физических размерах экрана. Можно измерить обычной линейкой;
  • mm (millimeters) — миллиметры, базируются на физических размерах экрана. Можно измерить обычной линейкой;
  • pt (points) — 1/72 дюйма, базируются на физических размерах экрана;

Как правило, при установке размера текста используются единицы измерения sp, которые наиболее корректно отображают шрифты:

В остальных случаях рекомендуется использовать dp.

Переводим dp в пиксели

Так как на разных устройствах dp может различаться, то для получения величин в пикселях и наоборот используйте методы (float):

Часто точность не требуется и можно использовать целые числа int. Напишем аналогичные методы.

На Kotlin можно написать функцию-расширение:

Если вы не определили размеры в XML, то их можно задать программно с помощью следующего кода (устанавливаем отступы для компонента):

Настройка шрифтов

Давайте чуть подробнее поговорим о работе со шрифтами, чтобы лучше понять специфику работы с текстами. Все люди разные — у кого-то зрение хорошое, у кого-то плохое. Android позволяет в настройках задать размеры шрифта в четырёх вариантах: Мелкий, Обычный, Крупный, Огромный. Для этого нужно зайти в Настройки | Экран | Размер шрифта.

Можно узнать программно выбранный вариант через свойство fontScale:

Обычному шрифту соответствует значение 1, мелкому — 0.9, крупному — 1.1, огромному — 1.15.

Если вы хотите, чтобы ваш текст мог меняться в зависимости от выбора пользователя, то используйте единицы измерения SP:

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

Третий вариант — если вы ни при каких обстоятельствах (какой же вы упрямый) не хотите зависеть от предпочтений пользователя и разрешения экрана, то пользуйтесь PX (пиксели). Среда разработки будет сопротивляться вашему желанию и выводить предупреждающие сообщения. Подумайте ещё раз о своём решении.

Используем стандартные системные размеры шрифтов

В Android зашиты три системный размера шрифтов, основанных на SP: Small, Medium и Large. Вы можете использовать их в стандартных случаях, когда вам не нужно задавать конкретные значения (атрибут style):

На самом деле стилей @android:style/TextAppearance.* гораздо больше. Если вы вдруг забыли про названия стилей, то можете использовать встроенные возможности среды разработки. На панели инструментов виджет TextView представлен в четырёх вариантах: TextView, Large, Medium, Small, и в них используется атрибут android:textAppearance.

Читайте также:  Android usb debugging как включить

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

Источник

Русские Блоги

Android DP, PX, SP взаимные инструменты преобразования

текст

Сегодня я написал класс инструмента, который преобразует друг друга друг с другом.

У нас иногда есть DP, PX, SP в разработке, сначала давайте посмотрим на концепцию этих трех.

px: На самом деле это блок пикселей, который мы часто говорим, иногда вы можете услышать экран 800 * 600, что означает PX
dpХотя это также блок размера, он адаптируется в зависимости от плотности различных экранов, а запуск Android является PX, который позже появится DP, DP обычно используется для настройки размера просмотра
sp: Это так же, как DP, но и для адаптационных экранов, но обычно используется для настроек размера шрифта.

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

PX Transfer Dip или DP

Видно, что PX преобразуется в DP первым путем получения масштаба, этот масштабный код полученного кода

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

Dip или DP Hurn PX

PX Transfer SP.

SP Transfer PX.

Таким образом, наше преобразование завершено, следующее является полным кодом этого класса инструментов

Источник

Русские Блоги

Android dip dpi density размер экрана что происходит

В разработке Android расстояние используется как единица измерения dp, dp — это падение, Google уже рассмотрел адаптацию для разработчика, когда он делает систему Android, но проблема в том, что если вы пишете представление, вы хотите, чтобы ширина всего экрана растянулась. Если вы не используете match_parent и используете dp, некоторым мобильным телефонам требуется 320dp, а некоторым — 350dp, 380dp и т. Д. Почему?

1. Несколько концепций

  • px: пиксельные пиксели, наименьшая единица отображения элементов на экране, например разрешение экрана 1920 * 1080 пикселей.
  • Размер телефона: физический размер диагонали экрана телефона в дюймах, например 5,5 дюйма.
  • ppi: пикселей на дюйм пикселей на дюйм
  • dpi: количество точек на дюйм аналогично ppi, но между ними есть разница. Ppi означает физическую плотность пикселей экрана, а метод расчета — это количество пикселей по диагонали / размер экрана. Dpi относится к плотности пикселей экрана, используемой при отрисовке интерфейса, которая может быть установлена ​​программно, и эти два значения часто не равны. Это может быть нелегко понять. Не беспокойтесь об этом сейчас. Я расскажу о конкретной разнице между ppi и dpi позже.
  • Плотность: можно понимать как плотность пикселей, соотношение точек на дюйм экрана мобильного телефона к стандартным mdpi (160 точек на дюйм), например, мобильный телефон 160 точек на дюйм, плотность = 1, мобильный телефон 440 точек на дюйм, плотность = 2,75
  • dp / dip: пиксели, не зависящие от плотности, пиксели, не зависящие от плотности. Это единица длины, определенная инженерами Google для Android. Используя эту единицу длины, элементы интерфейса могут сохранять приблизительные физические размеры на экранах с разной плотностью (dpi).

2. Конкретные различия

Ниже в качестве примера представлен мой мобильный телефон, разрешение экрана Xiaomi note3 1920 * 1080, 5,5 дюйма

2.1 Разница между ppi и dpi

Сначала напечатайте некоторые параметры

Взгляните на xdpi, ydpi, это официальные документы

Другими словами, xdpi и ydpi — это фактическое количество пикселей на дюйм в направлении x и y, что является концепцией ppi.
Давайте еще раз посмотрим на dpi:

Проследите расположение настроек densityDpi в исходном коде:

В файле build.prop телефонов Android есть элемент ro.sf.lcd_de density. Значение этого элемента фактически является dpi текущей системы. Это значение жестко запрограммировано (вы можете изменить это значение с помощью команды adb, но я не пробовал. Друзья также могут попытаться изменить его), но dpi также представляет собой количество точек на дюйм, которое похоже на ppi и в основном пропорционально.

Читайте также:  Miami nights для андроид
2.2 Связь между разрешением экрана и физическим размером

Во многих сообщениях в Интернете говорится, что dpi телефона = количество пикселей по диагонали экрана / физический размер, то есть физический размер = количество пикселей по диагонали / dpi телефона, следующий код:

Результат этого расчета 5,0066072047324965 дюймов, но мой телефон 5,5 дюйма, результат явно неверный.
не следует использоватьДиагональ пикселей / dpi Для расчета, но следует использоватьКоличество диагональных пикселей / ppi Для расчета, а что делать, если по диагонали нет ppi? Поскольку xdpi и ydpi представляют значение ppi, физический размер направления x и направления y можно преобразовать в соответствии с xdpi и ydpi, а затем физический размер диагонали можно рассчитать в соответствии с теоремой Пифагора, например:

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

2.3 Почему dp? Как рассчитывается dp?

Сначала посмотрим на взаимосвязь между плотностью dpi dp px

Другими словами:
density=dpi/160;
pixel = dp * density;
Для моего телефона dpi = 440, плотность = 440/160 = 2,75
Метод преобразования dp и px выглядит следующим образом:

Хорошо, вернемся к вопросу, который мы сказали в начале, почему у некоторых мобильных телефонов ширина экрана составляет 320dp, а у некоторых 380dp?
Далее dp обозначает число dp, px обозначает количество пикселей, дюйм обозначает физический размер в дюймах; dpi и плотность обозначают dpi и плотность мобильного телефона соответственно.

Wide dp = широкий пиксель / плотность = (широкий пиксель * 160) / dpi;
И dpi аналогично ppi, в основном пропорционально, dpi ≈ppi;
ppi = широкий пиксель / широкий дюйм;

Ширина dp = (ширина пикселей * 160) / точек на дюйм ≈160 * ширина в дюймах

Другими словами, сколько dp ширина экрана в основном не имеет отношения к пикселям, а пропорциональна физическому размеру. Также можно сказать, что количество dp между любыми двумя точками на экране пропорционально физическому размеру. Другими словами, если вы установите ширину и высоту вида на 10dp во время разработки, физическая ширина и высота, которые вы видите, будут в основном одинаковыми на разных устройствах. Вот и смысл создания dp unit, классный инженер слова!

Источник

Русские Блоги

Что такое dp, dip, sp и px и взаимосвязь между ними? «два»

Предисловие

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

Связанные понятия

dip : независимые от устройства пиксели (независимые от устройства пиксели) Различные устройства имеют разные эффекты отображения. Это связано с аппаратным обеспечением устройства. Как правило, мы рекомендуем использовать это для поддержки WVGA, HVGA и QVGA, не полагаясь на пиксели.

Обратите особое внимание на то, что провалы связаны с плотностью экрана, а плотность экрана зависит от конкретного оборудования. Неправильные настройки оборудования могут привести к тому, что провалы не будут отображаться нормально. На экране с плотностью экрана 160, 1dip = 1px, иногда разрешение вашего экрана может достигать 480 * 800, но плотность экрана установлена ​​неправильно, например, она по-прежнему 160, тогда любой провал будет отображаться неправильно. в это время, в основном, дисплей слишком мал.

Преобразование dip: dip (значение) = (int) (px (значение) /1,5 + 0,5)

dp : Очень просто, как дип.

px : px — наименьшая единица достаточно длинного изображения. пикселей (пикселей), на разных устройствах и на разных экранах отображается один и тот же эффект, это абсолютный пиксель, число никогда не изменится.

Читайте также:  Телевизор tcl 43p725 ultra hd android

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

Общие пиксели экрана мобильного телефона и соответствующие уровни разрешения:

Уровень разрешения плотность
ldpi 320*240
mdpi 480*320
hdpi 800*480
xhdpi 1280*720
xxhdpi 1920*1080

Простая взаимосвязь преобразования между dp и px:

Уровень разрешения Конверсионные отношения
ldpi телефон 1dp=0.75px
мобильный телефон mdpi 1dp=1.0px
hdpi телефон 1dp=1.5px
xhdpi телефон 1dp=2.0px
мобильный телефон xxhdpi 1dp=3.0px

Tip : Согласно приведенному выше описанию, мы делаем следующие выводы, для мобильных телефонов mdpi наш макет может достичь подходящего эффекта через dp

Дайте каштан:

Предполагая, что экран с разрешением QVGA (320 x 480) имеет физический размер 2 дюйма * 1,5 дюйма, размер экрана dpi = 160 этого мобильного телефона относится к фактическому физическому размеру мобильного телефона. , например iPhone4S составляет 3,5 дюйма, где 3,5 дюйма означает, что диагональ экрана мобильного телефона составляет 3,5 дюйма.

Примечание : Когда мы его используем, мы используем dip для пикселей и sp для шрифтов. Например, textSize = «16sp», layout_width = «60dp»; иногда вам нужно использовать единицы пикселей, например, когда вам нужно провести тонкую разделительную линию на экране. Это также рекомендация Google.

Преобразование

Преобразование пикселей

Когда мы пишем макет, мы все равно должны знать, сколько пикселей находится в 1 dp.

Формула преобразования выглядит следующим образом: dp = (DPI / (160 пикселей / дюйм)) px = плотность пикселей.

Обратите внимание, что здесь указаны все единицы измерения. px — это единица измерения, dp — это единица измерения, а плотность не имеет единицы.

Для удобства предположим, что разрешение dpi составляет 240 пикселей / дюйм, тогда плотность будет 1,5.

Тогда dp = 1.5px, обратите внимание, что это единица измерения, то есть независимые от устройства пиксели = пиксели плотности.

Затем, если он преобразован в числовое вычисление, это должна быть следующая формула

PX = density * DP

То есть значение пикселя = плотность * независимое от устройства значение пикселя, обратите внимание, что здесь есть слово значения.

Почему стандартное dpi = 160

(1) Android Design [1] классифицировал dpi обычных устройств по четырем классам: 120 dpi, 160 dpi, 240 dpi, 320 dpi.

При реальной разработке нам часто требуется преобразование между этими размерами (например, сначала завершить дизайн с определенным разрешением, а затем масштабировать до других размеров для точной настройки вывода), как правило в соответствии с dpi Соотношение между ними составляет 2: 1,5: 1: 0,75 для определения размера элементов интерфейса.

Другими словами, если 160 dpi используется в качестве эталона, пока DP размера является общим кратным 4, XHDPI умножается на 2, HDPI умножается на 1,5, а LDPI умножается на 0,75. Все размеры являются целыми пикселями.

Но если предположить, что стандартное разрешение 240 dpi, то DP является общим кратным 3. XHDPI умножается на 1,333, MDPI умножается на 0,666, а LDPI делится на 2.

Сложнее на основе LDPI и XHDPI, поэтому выберите 160 dpi.

Почему при раскладке мы должны использовать dip вместо px?

потому, что в мире существует множество мобильных телефонов с разной плотностью экрана. Какова плотность экрана? Это dpi, то есть количество пикселей на единицу длины.

Представьте себе, что если эти мобильные телефоны одинакового размера и плотность экрана сильно различается, означает ли это, что один мобильный телефон имеет несколько пикселей в горизонтальном направлении, а другой телефон — много пикселей в горизонтальном направлении? Когда мы рисуем такое же количество пикселей, это показывает

Будет ли отличаться длина отображения?

Например, в двух мобильных телефонах на изображении ниже, если одновременно установлена ​​кнопка длиной 2 пикселя, дисплей будет меньше на мобильном телефоне с более высоким плотность экрана.

При одновременном нажатии кнопки длиной 2dip на двух телефонах будет отображаться одинаковый размер.

Источник

Оцените статью