The correct way is described in the source code of Android:
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
by Romain Guy who was working with Android in its inception.
This is also described in the documentation: Conversion of dp units into pixel units .
// El umbral gestual expresado en dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;
//Obtener la escala de densidad de la pantalla.
final float scale = getResources().getDisplayMetrics().density;
// Convertir el dps en píxeles, basado en la escala de densidad
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);
// Usar mGestureThreshold como una distancia en píxeles...
Method to convert dp to pixels.
public int getPixelsfromDP(Context ctx, float dps) {
float scale = ctx.getResources().getDisplayMetrics().density;
return (int) (dps * scale + 0.5f);
}