¿Es posible especificar la unidad de píxeles en el código? Lo que quiero decir es, decir que tengo un diseño y quiero que el tamaño sea 20dp, a continuación, ¿hay alguna manera de hacerlo sin tener que escribir en un xml diseñoAndroid especificando unidades de píxeles (como sp, px, dp) sin usar XML
6
A
Respuesta
26
En una vista:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);
En una Actividad, por supuesto, deja el getContext()
. Para convertir desde píxeles escalados (sp
) a píxeles, simplemente use metrics.scaledDensity
en lugar de metrics.density
.
EDIT: Como @Santosh's answer puntos out, se puede hacer lo mismo utilizando la clase de utilidad TypedValue
:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, metrics);
int pixels = Math.round(fpixels);
Para sp
, sustituir TypedValue.COMPLEX_UNIT_SP
para TypedValue.COMPLEX_UNIT_DIP
.
Internamente, applyDimension()
hace exactamente el mismo cálculo que mi código anterior. Qué versión usar es una cuestión de tu estilo de codificación.
4
Puede utilizar
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
ahora, el valor de pixels
es equivalente a 20dp
El TypedValue contiene otros métodos similares que ayudan en la conversión
Cuestiones relacionadas
- 1. Android: conversión 'dp' a 'px'?
- 2. Android Convertir Px a Dp (Video Aspect Ratio)
- 3. ¿createScaledBitmap() usa px o dp?
- 4. Convertir píxeles a sp
- 5. Diseño de Photoshop de px a dp
- 6. Cómo calcular dp desde píxeles en Android programáticamente
- 7. Usar RelativeLayout dinámicamente y establecer márgenes en px, dp, inch, mm
- 8. ¿Por qué deberíamos usar sp para tamaños de fuente en Android?
- 9. android la definición píxeles independientes de densidad
- 10. Convertir dip a px en Android
- 11. ¿Puedo usar variables en XML para Android?
- 12. ¿Es dp lo mismo que dip?
- 13. View.setPadding solo acepta en px, ¿hay alguna forma de configurar Padding en dp?
- 14. ¿Cómo elimino las advertencias sobre mí al usar px en un diseño xml?
- 15. ¿Debo usar em o px?
- 16. line-height sin unidades
- 17. Android - píxeles a salsas
- 18. Creación de aplicaciones de Android sin XML
- 19. Android: Obtenga la resolución de pantalla/píxeles como valores enteros
- 20. problema parseInt% y px
- 21. Android: Convertir puntos en píxeles
- 22. Tamaño de fuente de botón programático Android en píxeles
- 23. f2py: Especificando la precisión real en fortran cuando se interactúa con python?
- 24. ¿Cómo saber la resolución de pantalla en "DP"?
- 25. Márgenes de LinearLayout, mediante programación con dp
- 26. conceptos básicos de píxeles independientes del dispositivo
- 27. Aplicación simple de Android sin XML
- 28. ¿Qué unidades están permitidas en google.maps.Size?
- 29. android: measureText() Devuelve píxeles basados en píxeles escalados
- 30. calc() 100% + #px
¿por qué se agregan 0,5? – pankajagarwal
Para redondear, esto es lo que hace el marco. Esto asegura que el tamaño nunca será 0px. –
gracias, parece bastante lógico ahora :) – pankajagarwal