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

Respuesta
 
Herramientas
  #1  
Viejo 19/04/13, 10:30:18
Array

[xs_avatar]
F3r7x0 F3r7x0 no está en línea
Usuario novato en la web
 
Fecha de registro: abr 2013
Mensajes: 1
Tu operador: Movistar

Adaptar OnTouch (x,y) a varias pantallas

Muy buenas gente, este es mi primer post y ya estoy preguntando :P.

Estoy haciendo una aplicación que consiste en que aparece una imagen durante unos segundos y seguidamente aparece la misma pero con 4 diferencias, el usuario debe de tocar donde estas esas diferencias y una vez encuentra las 4 se desbloquea un boton para pasar a la siguiente imagen, todo eso ya lo he hecho y lo he estado probando en un tipo de emulador, mi consulta es que si ejecuto otro emulador de tamaño diferente (aunque sea muy poca diferencia) ya no funciona el ontouch por que se queda con las X e Y en otra posicion, como puedo hacer para que esas X e Y no cambien o alguna otra solución.

Para detectar donde seleccionas lo tengo puesto por 4 if, uno por cada diferencia:

if (X < 199 && X > 189 && Y < 78 && Y > 60 && aux == true) {
txtaciertos.setText("Total de diferencias encontradas "
+ aciertos + "/4");
aciertos++;
elefantepelo2.setVisibility(View.VISIBLE);
aux = false;

}


Gracias ;)
Responder Con Cita


  #2  
Viejo 19/04/13, 12:20:45
Array

[xs_avatar]
rinxe rinxe no está en línea
Miembro del foro
 
Fecha de registro: mar 2009
Localización: Teruel
Mensajes: 260
Modelo de smartphone: Xiaomi Mi5S
Tu operador: Yoigo
Yo estoy haciendo un juego que se escala a los diferentes tamaños de pantalla. Ya que X e Y no son los mismos puntos en tamaños de pantalla direfentes. Para que esto no ocurra hay que escalar las coordenadas. Te explico un poco la formula que he usado.

Hay que conseguir la escala de cada pantalla, esto se hace:

scaleX = "tamaño de pantalla actual" / "tamaño de pantalla nuevo"
scaleY = "tamaño de pantalla actual" / "tamaño de pantalla nuevo"

Donde scaleX es el ancho y scaleY la altura. Tamaño de pantalla actual seria el ancho o alto para el que as programado el juego y tamaño de pantalla nuevo el ancho o el alto de la pantalla mas grande o mas pequeña.

Una vez conseguida la escala tienes que capturar la cordenada X o Y del evento touch y multiplicarla por scaleX o scaleY. El resultado sera el touch en la zona correcta.

Haber si te sirve de ayuda, de todas maneras todo esto esta explicado detalladamente en un libro de programacion
__________________
Visita mi blog: EL BAUL DE ANDROID
Responder Con Cita
  #3  
Viejo 19/04/13, 12:32:52
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
1º) No hardcodees

2º) Tienes que buscar la proporción entre el tamaño real de la imagen y el tamaño que está teniendo en la pantalla. El primero lo sacas del propio Bitmap (o Drawable), el segundo lo sacas del tamaño del ImageView.

Con los 4 datos (Altura y anchura de ambos objetos) calculas la posición % de altura y % de anchura de donde has tocado, y esos son los datos que tienes que chequear.

Es bastante más fácil de lo que parece en la explicación.

EDIT: Se me ha adelantado rinxe
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:10:40 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /