Posterior a de nuestra extensa búsqueda de información dimos con la respuesta esta obstáculo que tienen muchos usuarios. Te brindamos la solución y esperamos que resulte de mucha ayuda.
Solución:
Dejo valores de dimensión en un dimens.xml
recurso típicamente por tres razones:
-
Reutilizar: Necesito varios widgets o diseños para usar el mismo valor y solo quiero cambiarlo una vez al actualizar o modificar la aplicación.
-
Diferencia de densidad: Si necesito que la dimensión sea un poco más pequeña o más grande de
ldpi -> hdpi
osmall -> large
. -
Leyendo desde el código: Cuando estoy instanciando una vista en el código y quiero aplicar algunos static dimensiones, colocándolas
dimens.xml
comodp
(odip
) permitiéndome obtener un valor escalado en código Java conResources.getDimensionPixelSize()
.
respuesta suplementaria
@Devunwired enumera 3 razones para usar dimens.xml
. Aquí están los detalles de cómo hacerlo.
1. Reutilizar
Si establece algunos dp
o sp
valor en dimens.xml
una vez así
16dp
30sp
puede reutilizarlo en toda su aplicación en múltiples ubicaciones.
Luego, cuando necesite hacer un cambio, solo necesita hacerlo en un lugar.
notas
- Este es básicamente el mismo efecto que usar un estilo o tema.
- Tenga cuidado de no dar lo mismo a dos puntos de vista diferentes.
dimen
valor si realmente no deberían serlo. Si necesita realizar cambios en un conjunto de vistas pero no en otro, tendrá que volver a cada una individualmente, lo que anula el propósito.
2. Diferencia de tamaño
- @Devunwired llamó esto diferencia de densidadpero si estás usando
dp
(píxeles independientes de la densidad), esto ya se ocupa del problema de la diferencia de densidad para todos los casos, excepto los más pequeños. Entonces, en mi opinión, el tamaño de la pantalla es un factor más importante para usardimens.xml
.
Un 8dp
el relleno puede verse muy bien en un teléfono, pero cuando la aplicación se ejecuta en una tableta, parece demasiado estrecha. Puede resolver este problema haciendo dos (o más) versiones diferentes de dimens.xml
.
Haz clic derecho en tu res
carpeta y elige Nuevo > Archivo de recursos de valor. Luego escribe dimens
y elige Ancho de pantalla más pequeño. Escribir en 600 para el ancho (tableta de 7”). (Hay otras formas de elegir los tamaños. Consulte la documentación y esta respuesta para obtener más información).
Esto hará otro values
carpeta que se utilizará para dispositivos cuyo ancho de pantalla más pequeño es 600dp
. En la vista de Android los dos dimens.xml
los archivos se ven así.
Ahora puedes modificarlos de forma independiente.
valores/dimensiones.xml
16dp
valores-sw600dp/dimens.xml
64dp
Al usar su dimen
solo tienes que configurarlo con el nombre que usaste en ambos dimens.xml
archivos
El sistema elegirá automáticamente el valor correcto para usted según el dispositivo que esté utilizando el usuario.
3. Lectura del código
A veces es un dolor escalar programáticamente entre px
y dp
(ver esta respuesta para saber cómo).
Si tienes fijo dp
valor ya definido en dimens.xml
Me gusta esto
16dp
Entonces puedes conseguirlo fácilmente con
int sizeInPixels = getResources().getDimensionPixelSize(R.dimen.my_dp_value);
y ya se convertirá en píxeles para cualquier dispositivo de densidad que tenga el usuario.
Él dimens.xml
El archivo se utiliza para mantener todos los valores de píxeles codificados en un solo lugar.
Ahora, aunque es posible que no use estos valores repetidamente en este momento, sigue siendo una buena idea colocarlos en dimens.xml
Para futura referencia. Además, siguiendo un estándar Android
El paradigma de programación ayuda a otros desarrolladores a comprender su código más rápido. Esto es muy parecido a la strings.xml
donde colocamos String
¡Algunos de los cuales terminan usándose solo una vez! 🙂
Te mostramos las comentarios y valoraciones de los usuarios
Finalizando este artículo puedes encontrar las explicaciones de otros administradores, tú incluso tienes la habilidad mostrar el tuyo si lo deseas.