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


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

  • ПВ
  • падение
  • дп
  • зр

5096


источник


Ответы:


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

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

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

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

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

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

  6. зр
    Масштаб - независимые пиксели - это похоже на блок 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 Design ,

Чтобы рассчитать размеры на реальном устройстве это приложение может быть использовано.


5142



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

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

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

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

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

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

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


599



Я расскажу подробнее о том, как именно преобразование 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изображение для hdpi
  • 200 * 200 pxизображение для xhdpi

274



px Pixels - point per scale corresponds to actual pixels on the screen.

in Inches - based on the physical size of the screen.

mm Millimeters - based on the physical size of the screen.

pt Points - 1/72 of an inch based on the physical size of the screen.

dp Density - independent Pixels - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Note: The compiler accepts both dip and dp, though dp is more consistent with sp.

sp -Scale-independent Pixels - this is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user's preference.

Take the example of two screens that are the same size but one has a screen density of 160 dpi (dots per inch, i.e. pixels per inch) and the other is 240 dpi.

                          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

228



Moreover you should have clear understanding about the following concepts:

Screen size:

Actual physical size, measured as the screen's diagonal. For simplicity, Android groups all actual screen sizes into four generalized sizes: small, normal, large, and extra large.

Screen density:

The quantity of pixels within a physical area of the screen; usually referred to as dpi (dots per inch). For example, a "low" density screen has fewer pixels within a given physical area, compared to a "normal" or "high" density screen. For simplicity, Android groups all actual screen densities into four generalized densities: low, medium, high, and extra high.

Orientation:

The orientation of the screen from the user's point of view. This is either landscape or portrait, meaning that the screen's aspect ratio is either wide or tall, respectively. Be aware that not only do different devices operate in different orientations by default, but the orientation can change at runtime when the user rotates the device.

Resolution:

The total number of physical pixels on a screen. When adding support for multiple screens, applications do not work directly with resolution; applications should be concerned only with screen size and density, as specified by the generalized size and density groups.

Density-independent pixel (dp):

A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way. The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities.

Reference: Android developers site


179



dp is dip. Use it for everything (margin, padding, etc.).

Use sp for {text-size} only.


To get the same size on different screen densities, Android translates these units into pixels at runtime, so there is no tricky math for you to do.


See the difference between px, dp and sp on different screen sizes.

Enter image description here

Source: Android Programming: The Big Nerd Ranch Guide


164



I have calculated the formula below to make the conversions dpi to dp and sp enter image description here


116



Definitions

px or dot is a pixel on the physical screen.

dpi are pixels per inch on the physical screen and represent the density of the display.

Android gives alias names to several densities

  • ldpi (low) ~120dpi
  • mdpi (medium) ~160dpi
  • hdpi (high) ~240dpi
    • most devices in 2015 are here
  • xhdpi (extra-high) ~320dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-high) ~480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-high) ~640dpi

dip or dp are density-indenpendant pixels, i.e. they correspond to more or less pixels depending on the physical density.

  • 1dp = 1px on mdpi

enter image description here

sp or sip is a scale-independant pixel. They are scaled when the Large Text option is turned on in Settings > Accessibility

  • 1sp = 1dp
  • 1sp = 1.2dp with accessibility Large Text

What to use?

Use sp for Text size.

Use dp for everything else.


102



Source 1

Source 2

Source 3: (data from source 3 is given below)

These are dimension values defined in XML. A dimension is specified with a number followed by a unit of measure. For example: 10px, 2in, 5sp. The following units of measure are supported by Android:

dp

Density-independent Pixels - An abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi (dots per inch) screen, on which 1dp is roughly equal to 1px. When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Using dp units (instead of px units) is a simple solution to making the view dimensions in your layout resize properly for different screen densities. In other words, it provides consistency for the real-world sizes of your UI elements across different devices.

sp

Scale-independent Pixels - This is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.

pt

Points - 1/72 of an inch based on the physical size of the screen.

px

Pixels - Corresponds to actual pixels on the screen. This unit of measure is not recommended because the actual representation can vary across devices; each devices may have a different number of pixels per inch and may have more or fewer total pixels available on the screen.

mm

Millimeters - Based on the physical size of the screen.

in

Inches - Based on the physical size of the screen.

Note: A dimension is a simple resource that is referenced using the value provided in the name attribute (not the name of the XML file). As such, you can combine dimension resources with other simple resources in the one XML file, under one element.


101



Basically the only time where px applies is one px, and that's if you want exactly one pixel on the screen like in the case of a divider:

On >160 dpi, you may get 2-3 pixels,

On >120 dpi, it rounds to 0.


93