![]() |
|
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Que tipos de pantalla es recomendable soportar?
Hola, he terminado ya una aplicación que he desarrollado como proyecto fin de carrera, y lo único que me queda es adaptar los layouts a los diferentes tipos de pantalla existentes.
Esta aplicación está orientada a pantallas de 7" como máximo. Entonces no se si estas opciones serían las correctas o añadiríais alguna más layout-large-xhdpi layout-large-hdpi layout-large-mdpi layout-normal-xxhdpi layout-normal-xhdpi layout-normal-hdpi layout-normal-mdpi layout-small-mdpi layout-small-ldpi ¿Añadiríais algún tipo más?, ¿sobra alguno de los puestos?, ¿o con esto están cubiertos los tipos de pantalla menores de 7"?. Otro problema que tengo es que he creado un tipo de dispositivo virtual personalizado con una resolucion fullhd y 5" es decir normal-xxhdpi para simular al S4, xperia Z, HTC One o futuro Nexus 5, pero no se porqué cuando arranco el emulador eligiendo android 4.3 como target este no arranca nunca y tengo un i7 con 12GB de RAM así que por falta de potencia no será... ¿Sabéis porque puede ser que no arranque? Y por último, cuando editas un layout ves un preview de como se ve en ciertos tipos de pantllas, ¿hay alguna forma de añadir un preview personalizado? por ejemplo con las características normal-xxhdpi del cual no existe ningún preview actualmente. Un saludo y muchas gracias. |
|
|
|
#2
|
||||
|
||||
|
No se como serán tus layout, pero casi siempre basta con crear una única carpeta "layout" y hacerlo todo con medidas relativas.
Luego, la carpeta "xxhdpi" (y xxxhdpi, que también existe) no se usan para "layout", sólo para los iconos del Launcher (es decir, drawable-xxhdpi y drawable-xxxhdpi, pero todo lo que pongas ahí sólo va a usar los iconos del Launcher, el resto usará la "xhdpi"). Así que las carpetas con "xxhdpi" te sobran. A mi sólo me arranca el emulador si uso Intel, usando ARM no me arranca tampoco, aunque yo no tengo tanto maquinón como tú, debería funcionarte. La putada es que si usas Intel no puedes usar las Google API, por eso siempre depuro con el móvil. En cuanto a lo del Preview, no indicas si usas Eclipse o Android Studio, pero en Eclipse creo recordar que si es posible. De todas formas, las Preview sólo te sirven de vaga guía, al final terminan por no parecerse en nada (y si usas controles personalizados no los renderiza, al menos en Eclipse). Lo mejor es probarlo directamente en el móvil. |
|
#3
|
||||
|
||||
|
Si solo va a utilizarse en pantallas de 7 pulgadas sí le sobrarán carpetas de layouts.
Respecto a la pregunta, puedes limitar el tipo de pantallas en el manifest, si no recuerdo mal. Última edición por Duqe Día 09/10/13 a las 10:20:25 |
|
#4
|
||||
|
||||
|
Cita:
(Los guines bajos se supone que son espacios en blanco que el foro me los quita) Así se vería en un Nexus S | CheckBox__EditText__EditText__Editext | Las barras son los bordes de la pantalla | CheckBox__EditText__EditText__Editext | | CheckBox__EditText__EditText__Editext | | CheckBox__EditText__EditText__Editext | | CheckBox__EditText__EditText__Editext | Pero en un Nexus 4 se vería así: | CheckBox______EditText______EditText______Editext | | CheckBox______EditText______EditText______Editext | | CheckBox______EditText______EditText______Editext | | CheckBox______EditText______EditText______Editext | | CheckBox______EditText______EditText______Editext | Como se puede apreciar se separan las columnas, pero las de los bordes se ven muy pegadas a los bordes, entonces la unica solución que veo a esto es tener layout-normal-hdpi y layout-normal-xhdpi y disñar dos pantallas distintas. Se podría conseguir lo que quiero teniendo solo layout-normal como creo que dices? Antes no lo dije pero uso eclipse, y el emulador lo uso con la versión Intel, para depurar uso mi móvil, pero quiero probar la aplicación en las diferentes pantallas para corroborar que se vea de forma correcta en todas. Y el emulador me funciona bien con cualquier pantalla menos con el dispositivo personalizado que he creado con 5" de pantalla y 1080x1920 para emular al Galaxy S4, Xperia Z, HTC One y futuro Nexus 5 Por último creo que antes no lo dejé claro y la aplicación está hecha para pantallas de 7" hacia abajo, es decir para cualquier Smartphone y para las tablets de 7". Última edición por The_Hellknight Día 09/10/13 a las 18:11:47 |
|
#5
|
||||
|
||||
|
Aun utilizando dps y sps, sigue siendo necesario utilizar distintos layouts para distintos tipos de pantallas. Quizás alguno te puede servir para 2 tipos de pantallas, pero no para todas ni mucho menos.
|
|
#6
|
||||
|
||||
|
Ahí es donde quería llegar, entonces de la lista que puse en el primer post para abarcar todos los tipos de pantallas de menos de 7" están bien esos tipos o sobra o falta alguno más?.
Saludos y muchas gracias. |
|
#7
|
||||
|
||||
|
Cualquier Layout puede ser diseñado para que se ajuste de la forma QUE QUIERAS a una pantalla, independientemente de su tamaño y resolución.
Los únicos casos en los que veo necesario crear Layouts distintos es para cuando el código es también distinto, por ejemplo, una aplicación que en móvil son 2 Activity distintos y en tablet son 2 Fragments en la misma Activity (por ejemplo GMail). O para cuando tienes un Layout para portrait y otro para Landscape. En el resto de casos un buen diseño del Layout te vale para cualquier caso. Es luego más fácil también mantener la aplicación con un único Layout por cada Activity/Fragment/Elemento de ListView/etc que si tienes que hacerlo en 9 sitios. Para el caso que propones. Cada línea es un Layout con width wrap_content, cada elemento le pones su tamaño y el Layout centrado verticalmente. Ya está, el Layout estará siempre centrado, si la pantalla es más grande tendrá más margen por los lados. Es una solución, aunque yo personalmente prefiero más espacio entre los elementos, o que los EditText sean más grandes. Aunque es cierto que hay casos muy extremos donde si te puede interesar tener un Layout por cada tipo de pantalla, pero suelen ser casos donde por algún motivo no puedes poner un ScrollView (por el diseño). Y sólo serían para esos determinados Layouts. Última edición por kriogeN Día 09/10/13 a las 19:07:21 |
|
#8
|
||||
|
||||
|
En mi experiencia, lo de utilizar un mismo layout no es recomendable. Ya que como le ha pasado a The_Hellknight, al final te encuentras que el diseño para un tipo de layout, luego en otro dispositivo distinto no encaja como esperabas. Y al final, si quieres que todo tenga una armonía, tienes que utilizar distintos layouts sí o sí.
Si haces que tu aplicación solo funcione en móviles, y no en tablets, todavía te las puedes apañar. Aunque lo veo complicado. Porque con tamaños de pantalla tan dispares como tenemos en Android (tu aplicación se podría utilizar en un BQ 3.5, como en un Note), lo mejor al final es crear varios layouts. |
|
#9
|
||||
|
||||
|
De momento estoy haciendo diseños para cada tipo de pantalla, lo veo mejor por lo que dice Duqe, he estado probando cosas y por ejemplo si diseño una pantalla para un Nexus S no se ve bien en el Nexus 4, a menos que diseñe de nuevo la pantalla para el tipo del Nexus 4 que es lo que he terminado haciendo.
Un saludo gracias por vuestra ayuda. |
|
#10
|
||||
|
||||
|
Lo mejor es crear varios layouts con la misma base, y luego ir modificando los tamaños de los elementos, hasta conseguir lo que buscas. Eso si no quieres hacer una interfaz para móvil, y otra para tablet. Que ahí la cosa sí cambia bastante.
|
|
#11
|
||||
|
||||
|
Eso es lo que he hecho exactamente, tenía todos los layouts diseñados para una pantalla como la del Nexus One o Nexus S, que también es el mismo tipo que la de mi Galaxy S2 donde hacía todas las pruebas. Teniendo todos los layouts diseñados, simplemente los he copiado a la carpeta correspondiente de cada tipo de pantalla y les he hecho las modificaciones para adaptarlos, porque hacer todos los layouts de cero por cada pantalla sí que era una locura.
|
|
#12
|
||||
|
||||
|
Si las modificaciones son solo de tamaño de componentes lo mejor es usar los dimens.xml para definir variables de tamaño.
De este modo, tienes un único layout pero con diferentes tamaños segun el dispositivo (es decir, un fichero layout y muchos dimens, pero es más manejable y más fácil de cambiar el layout sin andar modificando mil copias) |
|
#13
|
||||
|
||||
|
Hola, también estoy desarrollando una aplicación en android y me encuentro en la misma fase que tu, ajustando los layouts a los distintos tipos de pantallas.
Yo tengo una carpeta llamada layouts-xhdpi (para nexus4) y otra llamada layout-xxhdpi (para S4). Mi problema es, que ambos simuladores toman los layouts de la misma carpeta. Ademas de la definición de carpetas, agregaste algún otro atributo en otro lugar, como por ejemplo en el Manifest? Gracias ;). |
|
#14
|
||||
|
||||
|
Cita:
En cuanto al tema en general, estoy con mocelet, hacer una aplicación entera en todos los tipos de layouts es una pesadilla de mantenimiento. Existen 1000 formas de hacer que un layout se auto ajuste según el tamaño de pantalla. Y en el peor de los casos usar un dimens diferente. El sistema multilayout sólo está justificado si verdaderamente se van a ver distinto entre versiones distintas. Cosa que realmente sólo ocurre en muy determinadas ocasiones (quizás 1 o 2 Layouts), y casi siempre por tener una versión para móviles, otra para tablets de 7 y otra para tablets de 10. En mi caso, la app en la que trabajo ahora tiene 63 layouts (hay que tener en cuenta que cada pantalla tiene 2 layouts, una para una ActionBar personalizada y otra para la Activity, además de algunas con varios fragments y varios tipos de items para los ListView y GridView, y un item para un ViewPager infinito que me simula una galería). Y de todos esos Layouts sólo tengo 1 multilayout, y es porque tiene que tener un formato muy específico y sin posibilidad de ScrollView. |
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 21:11:18 (GMT +1)
HTCMania: líderes desde el 2007






