in Android, Android Code Tips

Convert dip to px in Android

It is always a good practice to use dip (Density-independent pixel) when you set values at your XML files.

Density-independent pixel (dip)
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 dip units needed, based on the actual density of the screen in use. The conversion of dip units to screen pixels is simple: pixels = dips * (density / 160). For example, on 240 dpi screen, 1 dip would equal 1.5 physical pixels. Using dip units to define your application’s UI is highly recommended, as a way of ensuring proper display of your UI on different screens.

There are times when you have to set a value programmatically. Most android methods require pixels as input arguments so there are cases that you must convert from dips to pixels.

In order to do so:

// Convert 14 dip into its equivalent px
Resources r = getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics());