Android Layout – Understanding Relations Between dip, px, and dpi

androidlayoutresolution

If, in a layout xml file, I set the size to be, for example 12dip. Will that always be 12px in mdpi and so 18px in hdpi?

So is dip always true for mdpi and will scale accordingly for other densities?

Best Answer

That question is fully covered by official documentation. Relations between dip, px and dpi are covered by this section.

Quote:

Density-independent pixel (dp)

A virtual pixel unit that applications can use in defining their UI, 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, the baseline density assumed by the platform (as described later in this document). At run time, the platform transparently handles any scaling of the dp units needed, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: pixels = dps * (density / 160). For example, on 240 dpi screen, 1 dp would equal 1.5 physical pixels. Using dp units to define your application's UI is highly recommended, as a way of ensuring proper display of your UI on different screens.

So the statement:

that always be 12px in mdpi and so 18px in hdpi

seems to be correct, according to the docs.

Related Question