Cómo admitir diferentes tamaños de pantalla en Android

Estoy desarrollando una aplicación en Android y tengo que admitir todos los diferentes tamaños de pantalla y densidad. Así que he creado una carpeta diferente para el diseño: layout-small layout-large y layout .

Luego creé una carpeta diferente para la imagen: ldpi, mdpi y hdpi . En toda la carpeta dibujable la imagen debe ser con un tamaño diferente verdad? Te pregunto por qué tengo un teléfono con un tamaño de pantalla grande y un medio de densidad, la imagen que se muestra será más pequeña y no tomarán el tamaño correcto.

Para Diferentes tamaños de pantalla, la siguiente es una lista de directorios de recursos en una aplicación que ofrece diferentes diseños de diseño para diferentes tamaños de pantalla y diferentes tipos de mapas de bits para pantallas de pequeña, mediana, alta y alta densidad.

 res/layout/my_layout.xml // layout for normal screen size ("default") res/layout-small/my_layout.xml // layout for small screen size res/layout-large/my_layout.xml // layout for large screen size res/layout-xlarge/my_layout.xml // layout for extra large screen size res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation res/drawable-mdpi/my_icon.png // bitmap for medium density res/drawable-hdpi/my_icon.png // bitmap for high density res/drawable-xhdpi/my_icon.png // bitmap for extra high density 

El siguiente código en el Manifiesto es compatible con todos los dpis.

  

Y también mira mi respuesta SO .

Puede usar la unidad de tamaño sdp en lugar de la unidad de tamaño dp. La unidad de tamaño sdp es relativa al tamaño de la pantalla y, por lo tanto, a menudo se prefiere para seleccionar múltiples tamaños de pantalla.

Úselo con cuidado! por ejemplo, en la mayoría de los casos, aún necesita diseñar un diseño diferente para las tabletas.

A partir de Android 3.2 (nivel de API 13), los grupos de tamaño (carpetas pequeñas, normales, grandes, xgrandes) están en desuso en favor de una nueva técnica para administrar los tamaños de pantalla en función del ancho de pantalla disponible.


Hay diferentes configuraciones de recursos que puede especificar según el espacio disponible para su diseño:

1) Ancho más pequeño : el tamaño fundamental de una pantalla, como lo indica la dimensión más corta del área de pantalla disponible.

Valor calificador: sw’dp value’dp

P.ej. res / sw600dp / layout.xml -> se usará para todos los tamaños de pantalla mayores o iguales a 600dp. Esto no tiene en cuenta la orientación del dispositivo.


2) Ancho de pantalla disponible : especifica un ancho mínimo disponible en unidades dp en el que se deben usar los recursos.

Valor calificador: w’dp value’dp

P.ej. res / w600dp / layout.xml -> se usará para todas las pantallas, cuyo ancho es mayor o igual a 600dp.


3) Altura de pantalla disponible : especifica una altura de pantalla mínima en unidades de dp en la que se deben usar los recursos.

Valor calificador: h’dp value’dp

P.ej. res / h600dp / layout.xml -> se usará para todas las pantallas, cuya altura es mayor o igual a 600dp.


Entonces, al final, la estructura de su carpeta podría verse así:

res / layout / layout.xml -> para teléfonos (menos de 600dp de ancho disponible)
res / layout-sw600dp / layout.xml -> para tabletas de 7 “(600dp de ancho y más grande)
res / layout-sw720dp / layout.xml -> para tabletas de 10 “(720dp de ancho y más grande)


Para obtener más información, lea la documentación oficial:
https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

Android se puede ajustar por sí mismo, puede poner una imagen separada para una carpeta diferente si desea usar diferentes imágenes para dispositivos de alta resolución y otros dispositivos. De lo contrario, simplemente colóquelo en una sola carpeta dibujable, solo para algunas imágenes, también puede hacer 9-patch.

leer aquí

necesita permiso en manifiesto para enlace de soporte de pantalla múltiple

  

Puede averiguar dinámicamente las dimensiones de la pantalla

 Display mDisplay= activity.getWindowManager().getDefaultDisplay(); int width= mDisplay.getWidth(); int Height= mDisplay.getHeight(); 

El diseño se puede establecer utilizando el ancho y la altura obtenidos con este método.

Suena alto, cuando se trata de admitir múltiples tamaños de pantalla. Los siguientes resultados son mejores.

 res/layout/layout-w120dp res/layout/layout-w160dp res/layout/layout-w240dp res/layout/layout-w160dp res/layout/layout-w320dp res/layout/layout-w480dp res/layout/layout-w600dp res/layout/layout-w720dp 

Comprobar el ancho y alto del dispositivo usando métricas de pantalla

Coloque / descubra qué distribución se adapta al ancho resultante del dispositivo.

 let smallestScreenWidthDp="assume some value(Which will be derived from Display metrics)" 

Todo debe verificarse antes de setContentView (). De lo contrario, te metes en problemas

  Configuration config = getResources().getConfiguration(); Configuration config = getResources().getConfiguration(); if (config.smallestScreenWidthDp >= 600) { setContentView(R.layout.layout-w600dp); } else { setContentView(R.layout.main_activity); } 

En la parte superior, he creado tantos diseños para que quepan en varias pantallas, todo depende de ti, puedes o no. Puedes ver las reseñas de play store de Which API, The Downloads are High … forma que debes seguir .

Espero que te sirva de mucho. Algunas usaban bibliotecas de terceros. Puede reducir tu trabajo, pero esa no es la mejor práctica. Acostúmbrate a las mejores prácticas de Android.

Mira esto

utilizar la biblioteca sdp que se proporciona en github

Agregando a @ud_an

No es una buena práctica crear diferentes carpetas para diseños. Cree su diseño de modo que funcione bien con todos los tamaños de pantalla. Para lograr esto, juega con los atributos de diseño. Solo necesita tener diferentes imágenes para los tipos hdpi, mdpi y ldpi. El rest será administrado por el sistema operativo Android.

puede crear mapas de bits para la resolución / tamaño más alto que se ejecutará su aplicación y cambiar su tamaño en el código (en tiempo de ejecución)

mira este artículo http://nuvornapps-en.blogspot.com.es/