|
||
|
![]() |
![]() |
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 |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Tamaño pantalla, densidad y Layouts
Buenas tardes os comento mi problemática.
Estoy desarrollando una aplicación para android y tengo una pantalla donde tengo que colocar una serie de imágenes sobre un layout. Para esto utilizo un RelativeLayout y las imagenes van en un ImageVIew. La cuestión es que al colocar el ImageView en su posición desde el diseñador me modifica los parametros Layout_MarginLeft y LayoutMarginTop con sus valores correspondientes. El problema viene al uitlizarlo en distintos dispositivos, comento el caso con un ejemplo: La prueba se hace en un dispositivo de 320x480 mdpi y otro de 480x800 hdpi. Los drawables correspondientes al fondo y la imagen estan en su tamaño correcto en las carpetas drawable-mdpi y drawable-hdpi. He creado las carpetas layout-normal y layout-large para definir el los respectivos layout pero resulta que tanto un dispositivo como el otro se corresponden con el layout normal dentro de su densidad, por tanto si coloco los parametros LayoutMargin_Left y top para que se vea bien en el de 320x480 se descuadra en el otro. No se como plantear este tema. También intenté añadir el fondo con la imagen incorportada y mapear el lugar donde el usuario hace clic pero estoy en las mismas. Estoy planteando mal el problema? es tan dificil hacer una interfaz que se adapte bien a la mayoría de los dispositivos? Adradecería una ayuda porque estoy un poco perdido, no se si tengo que volver a plantearlo de cero y hacer la interfaz mas flexible en cuanto a la colocación de los elementos. Un saludo y gracias. |
|
#2
|
||||
|
||||
El diseñador trabaja en PX, por eso ningún programador de Android que quiera trabajar con múltiples resoluciones lo usa. Lo mejor es hacer el XML a mano y usar DIP en lugar de PX. De esta forma se adaptará a todas las resoluciones.
|
#3
|
||||
|
||||
Gracias por tu respuesta.
En el ejemplo anterior estoy trabajando con dp. El xml esta echo a mano, pero el problema es la colocación del imageView. Para que se me entienda lo que digo, lo represento con el ejemplo que he puesto. En la pantalla normal-mdpi(320x480) para que el imageView este colocado en su sitio el LayoutMarginTop tiene que ser de 114dp. En cambio en la pantalla normal-hdpi(480x800) el valor correcto es de 140dp. Coomo ves no coinciden y al utilizar ambas el layout de la capeta layout-normal pues no se como hacer que funcione correctamente en ambos tamaños. |
#4
|
||||
|
||||
Intenta alinear elementos con el Relative Layout más que especificar márgenes exactos. Por ejemplo, si la imagen tiene que estar "centrada respecto de algo" o "encima de un botón" o "pegado a...". Poner unidades a mano es un quebradero de cabeza en cualquier unidad.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#5
|
||||
|
||||
Gracias por tu respuesta.
Empiezo a entender que el fallo está en el planteamiento de la interfaz. La cuestión es que el diseño con el que estoy trabajando me obliga a colocar los elementos en un punto determinado de la pantalla y ahí creo que es donde está el error. Supongo que el diseño de interfaz en uno de los caminos que hay que atravesar para adaptarse al desarrollo móvil. El diseño me viene dado por un diseñador, que al igual que yo, no teníamos experiencia previa aplicaciones para smartphones. ¿Me podéis dar algún consejo a la hora de diseñar la interfaz de mis aplicaciones? Por ejemplo lo aportado por mocelet, no utilizar una posiciones absolutas, si no relativas a algo. Un saludo. |
#6
|
||||
|
||||
Tienes la guía oficial de Android: http://developer.android.com/guide/p...s_support.html
Si no quieres leerte el tocho puedes saltar al Best Practices, aunque la lectura es instructiva
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#7
|
||||
|
||||
De nuevo gracias.
Siguiendo tu consejo y después de repasar la documentación he rediseñado la interfaz. Ahora todos los elementos se posicionan de forma relativa entre si. Uno alineado abajo-derecha otro encima de el...etc Así y jugando con los paddings poniendo los valores en dp he conseguido representar lo que queríen en los distintos tamaños. Pero ahora me surge una nueva duda con respecto a las tablets. Tengo una Wortex 85 pci de 8 pulgadas y 800x600 de resolución. La duda es sobre los drawables que necesito para que se vea bien en este tamaño. Android me toma la pantalla como de baja densidad por lo que va a buscar las imagenes a la carpeta drawables-ldpi. Si coloco aquí las imagenes con mayor tamaño para adaptarlo a la tablet si arranco en un dispositivo con una pantalla pequeña de baja densidad me mostrará los iconos enormes. ¿Como se afronta esta problemática? ¿se crean 2 versiones para la aplicación una para moviles limitandola desde el manifest a pantallas de tamaño movil y otra para tablets? ¿Exite otra forma mejor de hacerlo? Un saludo y gracias. |
![]() |
![]() |
||||||
|