Cómo calcular dp de píxeles en android programaticamente
Quiero calcular dp
de px
programmatically. ¿Cómo hacerlo? Obtengo resolución de:
DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); ht = displaymetrics.heightPixels; wt = displaymetrics.widthPixels;
- ¿Cómo sé cuánto DPI tiene el dispositivo?
- Cómo determinar qué recurso de mapa de bits se ha cargado (ldpi, mdpi o hdpi)?
- Android y el soporte de múltiples diseños de pantallas
- ¿Cómo diferenciar el diseño para 480 * 800 y 480 * 854 resoluciones de pantalla en android?
- ¿Cómo hacer una resolución de cámara independiente de vista previa en Android?
- Android visualiza la transformación de rotación 3D en pantallas de gran resolución
- ¿Cómo puedo configurar el ancho de los botones de radio para cambiar con respecto al tamaño de la pantalla? (androide)
- Tamaños extraíbles de los androides cambia en la pantalla al leer la imagen del archivo
- ¿Hay una manera de determinar la altura de la pantalla física de android en cm o pulgadas?
- Android: Tamaño de texto de Canvas.drawText () en diferentes resoluciones de pantalla
- ¿Qué resolución debería tener mi pantalla de bienvenida de Android?
- Tablet carpeta extraíble para la tableta
- Qt Android. Obtener resolución de pantalla del dispositivo
Esto debería darle los píxeles de conversión -> dp:
DisplayMetrics displaymetrics = new DisplayMetrics(); int dp = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, myPixels, displaymetrics );
Todas las respuestas aquí muestran una conversión de dp- > px en lugar de px-> dp , que es lo que el OP pidió. Tenga en cuenta que TypedValue.applyDimension
no se puede utilizar para convertir px-> dp, por lo que debe utilizar el método descrito aquí: https://stackoverflow.com/a/17880012/504611 (se cita a continuación para mayor comodidad).
Sin contexto, los métodos estáticos elegante:
public static int dpToPx(int dp) { return (int) (dp * Resources.getSystem().getDisplayMetrics().density); } public static int pxToDp(int px) { return (int) (px / Resources.getSystem().getDisplayMetrics().density); }
float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics()); float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics());
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); String str_ScreenSize = "The Android Screen is: " + dm.widthPixels + " x " + dm.heightPixels; TextView mScreenSize = (TextView) findViewById(R.id.strScreenSize); mScreenSize.setText(str_ScreenSize);
Puedes hacerlo?
O esto también puede ayudar u
int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 123.4, getResources().getDisplayMetrics());
- Filtro de intenciones de Android: asociar aplicación con extensión de archivo
- ¿Cómo prueba una aplicación de Android en varias actividades?