Acceder

Ver la Versión Completa : App con compatibilidad de dispositivos


Esteban_
21/03/13, 15:00:57
Hola a todos,

estoy haciendo una App y de momento va todo bien en su contenido. El problema lo tengo cuando en el simulador le doy a ver en otro dispositivo, entonces desaparecen los botones (en el caso de probar en un dispositivo de menor tamaño) o sobra espacio por todos lados (en el caso contrario).
He leido lo de los diferentes lauouts (normal, large, small), pero no se exactamente para que dispositivo es cada uno, o sea, desde que hasta que pulgadas coge el normal, por ejemplo. De todas formas da igual, aunque lo hiciese, hay infinidad de tamaños, y esos layouts que defina no se van a adaptar a todos. Asi que la pregunta es:

¿cómo se hace para que una App se adapte a cualquier tamaño de pantalla? O sea, que la distancia entre botones, o distancia al margen izquierdo, superior, .. sean relativas y no absolutas. Los tamaños de textos tambien me salen absolutos. He probado con sp,dp, pero nada.

gracias a todos

pernath
22/03/13, 09:46:09
Una manera es trabajar con "dp" en lugar de con pixels. De esta manera estarás adaptando las medidas a la densidad de pixels de cada pantalla en lugar de dar un valor absoluto(pixels).

Un saludo.

mariancm
24/03/13, 19:20:52
Si tienes muchos widgets en una vista utiliza un ScrollView, también se utiliza cuando quieres que la vista tenga orientación vertical y horizontal.

Esteban_
26/03/13, 12:09:07
gracias por las respuestas.

ya lo he intentado con dp,sp,...no cambia nada.

quiero hacer un ScrollView con unos textos, pero meter los botones principales de la App en uno, me parece algo feo.

No hay alguna clase para poder preguntar el tamaño de la pantalla y poder definir uno mismo, en funcion del tamaño, las coordenadas x e y donde se quiere colocar el boton?

Si por ejemplo quisiese colocar un boton en la esquina superior derecha, pues preguntaría cual es el ancho de la pantalla y al valor que me de, le resto el tamaño del botón, y asi lo podría tener siempre en la esquina, da igual cual sea el tamaño de la pantalla.

Es lo único que se me ocurre viendo que no hay nada más, o que lo que hay, no me funciona.

un saludo.

sgsbarna
26/03/13, 14:03:01
gracias por las respuestas.

ya lo he intentado con dp,sp,...no cambia nada.

quiero hacer un ScrollView con unos textos, pero meter los botones principales de la App en uno, me parece algo feo.

No hay alguna clase para poder preguntar el tamaño de la pantalla y poder definir uno mismo, en funcion del tamaño, las coordenadas x e y donde se quiere colocar el boton?

Si por ejemplo quisiese colocar un boton en la esquina superior derecha, pues preguntaría cual es el ancho de la pantalla y al valor que me de, le resto el tamaño del botón, y asi lo podría tener siempre en la esquina, da igual cual sea el tamaño de la pantalla.

Es lo único que se me ocurre viendo que no hay nada más, o que lo que hay, no me funciona.

un saludo.

Utiliza Relativelayout o Framelayout para colocar lo que quieras independientemente de los tamaños... Gravity = Right, Left, Center Vertival, Center Horizontal Top (arriba), Botton (abajo), etc...... Es la solución que yo implementé para dejar siempre algo fijo sin pensar en tamaños... No sé si es lo que buscas...

Particulñarmente yo soy un enamorado de los Relativelayouts, puedes colocar cualquier cosas donde quieras, arriba, abajo, al lado de, arriba de, etc...

dejo ejemplo...

ephramdoyle
26/03/13, 22:19:21
Estoy de acuerdo con sgsbarna.
Puedes ver como ejemplo mis aplicaciones. (https://play.google.com/store/apps/developer?id=edoyle)

Por lo general con vistas verticales (portrait) lo mejor es:
+ Con único directorio "drawable" y "layout"
+ Utilizar como formato de medidas DP en lugar PX (utiliza mi conversor (https://play.google.com/store/apps/details?id=projectes.edoyle.pxdpconverter)o este otro vía web http://labs.rampinteractive.co.uk/android_dp_px_calculator/)
+RelativeLayout y añadiendo en muchos casos en el interior un ScrollView (obligatorio para modelos ldpi y mdpi).

Con eso no deberías tener muchos problemas.

Esteban_
10/04/13, 08:28:02
gracias por las respuestas. Teníais razón. Con un RelativeLayout y jugandon con el "wrap-" y el "match" se consigue. Es importante elegir el tamaño correcto ("wrap-" y "match-") y como hay dos valores y dos elementos (el layout y los elementos que van dentro) tenemos 4 posibilidades y hasta que di con la correcta, tarde un tiempo. Pero ya funciona.

Muchas gracias

Esteban_
10/04/13, 08:49:05
@sgsbarna, acabo de ver tu imagen. Soy de sevilla (del Betis claro) y me acabo de mudar a BCN. En el pueblo donde vivo acaban de abrir una peña bética y como soy del betis pues me enteré ;-), no se si aparecerá en tu mapa, pero ya sabes donde hay otra peña. Por cierto, vivo en Olesa de Montserrat.

un saludo y musho beti