Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Programe la altura en LayoutParams como píxeles independientes de la densidad

¿Hay alguna manera de establecer la altura / ancho de un LayoutParams como píxeles independientes de la densidad (dp)? Parece que la altura / ancho, cuando se establece mediante programación, están en píxeles y no dp.

4 Solutions collect form web for “Programe la altura en LayoutParams como píxeles independientes de la densidad”

Necesita convertir su valor de inmersión en píxeles:

int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, <HEIGHT>, getResources().getDisplayMetrics()); 

Para mí esto hace el truco.

  public static int getDPI(int size, DisplayMetrics metrics){ return (size * metrics.densityDpi) / DisplayMetrics.DENSITY_DEFAULT; } 

Llame a la función como esta,

 DisplayMetrics metrics; metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int heigh = getDPI(height or width, metrics); 

Aquí está mi fragmento:

 public class DpiUtils { public static int toPixels(int dp, DisplayMetrics metrics) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); } } 

Donde DisplayMetrics metrics = getResources().getDisplayMetrics()

Dado que puede ser utilizado varias veces:

 public static int convDpToPx(Context context, float dp) { DisplayMetrics metrics = context.getResources().getDisplayMetrics(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics); } 

Lo encontré más práctico usar la tarifa de conversión, como usally más de un valor tiene que ser convertido. Dado que la tasa de conversión no cambia, ahorra un poco de tiempo de procesamiento.

 /** * Get conversion rate from dp into px.<br> * Eg to convert 100dp: px = (int) (100 * convRate); * @param context eg activity * @return conversion rate */ public static float convRateDpToPx(Context context) { return context.getResources().getDisplayMetrics().densityDpi / 160f; } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.