Foros del Web » Programando para Internet » Android »

Veamos las coordenadas!!!

Estas en el tema de Veamos las coordenadas!!! en el foro de Android en Foros del Web. Bueno gente, hoy creo que me ando luciendo escribiendo ya 2 temas en el mismo día, esta vez vamos a ver como sacar las coordenadas ...
  #1 (permalink)  
Antiguo 26/07/2011, 19:10
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 5 meses
Puntos: 74
Veamos las coordenadas!!!

Bueno gente, hoy creo que me ando luciendo escribiendo ya 2 temas en el mismo día, esta vez vamos a ver como sacar las coordenadas de nuestra pantalla de la aplicación ademas de indicar si estamos haciendo presión, moviéndonos o sin presión.

Para esta parte nos sera muy útil las siguientes librerías:
Cita:
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
Vamos a declarar en nuestro main.xml los textview que vamos a utilizar.

1.- Nuestro clasico textview de "Hello word" o pueden cambiarla la verdad
2.- El texto donde va a ir la acción que se esta realizando.
3.- La posición o coordenada en X
4.- La posición o coordenada en Y

Creo que no es necesario que les diga como agregar los textview en el main.xml por que nadie a comentado nada al respecto.

Bueno ya tenemos listo nuestro Graphical Layout ahora solo falta agrega el código en nuestro .java

Aunque uno pensaría "no jodas te apuesto que es un buen de código" para sorpresa no es tanto comparado a otros .

Primero declaramos nuestros textview que vamos a modificar o mejor dicho vamos a agregarle mas texto por cada vez que se modifique algo en el layout.

Cita:
TextView textEvent, textX, textY;
Los llenamos con sus respectivos id para modificarlos.

Cita:
LinearLayout MainLayout = (LinearLayout)findViewById(R.id.mainlayout);
textEvent = (TextView)findViewById(R.id.event);
textX = (TextView)findViewById(R.id.x);
textY = (TextView)findViewById(R.id.y);
Y lo que hace toda la magia de este asunto es la siguiente instrucción:

Cita:
private View.OnTouchListener OnTouchListener
= new View.OnTouchListener(){

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// TODO Auto-generated method stub

textX.setText("x: " + String.valueOf(motionEvent.getX()));
textY.setText("y: " + String.valueOf(motionEvent.getY()));

int action = motionEvent.getAction();

switch (action){
case MotionEvent.ACTION_DOWN:
textEvent.setText("ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
textEvent.setText("ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:
textEvent.setText("ACTION_UP");
break;
case MotionEvent.ACTION_CANCEL:
textEvent.setText("ACTION_CANCEL");
break;
default:
textEvent.setText("Desconocida!");
}

return true;
}

};
  #2 (permalink)  
Antiguo 26/10/2012, 03:55
Avatar de Beni_  
Fecha de Ingreso: octubre-2012
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Veamos las coordenadas!!!

Como salta el metodo OnTouchListener ?

Gracias por el tutorial y un saludo !

Última edición por Beni_; 26/10/2012 a las 05:02
  #3 (permalink)  
Antiguo 28/10/2012, 00:04
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 5 meses
Puntos: 74
Respuesta: Veamos las coordenadas!!!

Saltar al evento ontouch??? todo esto lo tengo dentro del main por asi decirlo... es como si a un boton le dieras OnClickListener.... puedes crear un evento OnTouch en cualquier view segun tengo entendido.... sirve mucho mas cuando quieren darles efectos dependientes del eje coordenado donde le des el touch....
  #4 (permalink)  
Antiguo 31/10/2012, 21:45
Avatar de Barrero0717  
Fecha de Ingreso: octubre-2012
Ubicación: Bogotá, Colombia
Mensajes: 8
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Veamos las coordenadas!!!

Hola zero_master. Primero gracias por hacer tan buenos foros sobre Android :D
Bueno, he hecho este programa y al copiar el código correspondiente me aparece un error en la siguiente instrucción: "private View.OnTouchListener OnTouchListener". Quito el "private" del inicio y el error se soluciona. Compilo el código perfectamente y paso el .pk a mi celular (Samsung Galaxy Ace con Android 2.3.4). Cuando arranco la aplicación aparece el error que dice que la aplicación se ha detenido inesperadamente. ¿Que puede ser?
Gracias por la atención prestada.
  #5 (permalink)  
Antiguo 01/11/2012, 19:33
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 5 meses
Puntos: 74
Respuesta: Veamos las coordenadas!!!

Hmmm tiene rato que puse esto... deja checo en mis disco duro viejo si lo tengo por ahi guardado para que cheques el codigo completo a mi nunca me marco ningun error... bueno claro al inicio cuando empece a hacerlo pero despues de corregirlos es lo que puse aqui...
  #6 (permalink)  
Antiguo 01/11/2012, 21:38
Avatar de Barrero0717  
Fecha de Ingreso: octubre-2012
Ubicación: Bogotá, Colombia
Mensajes: 8
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Veamos las coordenadas!!!

Esperare el código completo.
Muchas gracias :D
  #7 (permalink)  
Antiguo 01/11/2012, 21:46
Avatar de zero_master  
Fecha de Ingreso: junio-2011
Ubicación: Leon, Gto
Mensajes: 290
Antigüedad: 13 años, 5 meses
Puntos: 74
Respuesta: Veamos las coordenadas!!!

Saludos encontre entre mis archivos otro proyecto que hice... hago lo mismo pero le aplico el OnTouch a un ImageView para ver los valores de los pixeles en una imagen... espero te sirva

Código Javascript:
Ver original
  1. import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.graphics.Bitmap;
  4. import android.graphics.BitmapFactory;
  5. import android.widget.ImageView;
  6. import android.widget.LinearLayout;
  7. import android.widget.TextView;
  8. import android.view.MotionEvent;
  9. import android.view.View;
  10.  
  11. public class ImagRGBPixel extends Activity {
  12.     Bitmap bMap;
  13.     ImageView image;
  14.     TextView text,pixel;
  15.     /** Called when the activity is first created. */
  16.     @Override
  17.     public void onCreate(Bundle savedInstanceState) {
  18.         super.onCreate(savedInstanceState);
  19.         setContentView(R.layout.main);
  20.         LinearLayout MainLayout = (LinearLayout)findViewById(R.id.mainlayout);
  21.         bMap = BitmapFactory.decodeResource(getResources(), R.drawable.rgb);
  22.         image = (ImageView)findViewById(R.id.test_image);
  23.         text = (TextView)findViewById(R.id.RGB);
  24.         pixel = (TextView)findViewById(R.id.Pixel);
  25.         image.setImageBitmap(bMap);
  26.         image.setOnTouchListener(OnTouchListener);
  27.         MainLayout.setOnTouchListener(OnTouchListener1);
  28.     }
  29.     public int[] RGBreturn(int x)
  30.     {
  31.         int h[] = new int [4];
  32.         h[3] = (x>>24)&0xFF;
  33.         h[0] = (x>>16)&0xFF;
  34.         h[1] = (x>>8)&0xFF;
  35.         h[2] = x&0xFF;
  36.         return h;
  37.     }
  38.     private View.OnTouchListener OnTouchListener
  39.        = new View.OnTouchListener(){
  40.      
  41.      @Override
  42.      public boolean onTouch(View view, MotionEvent motionEvent) {
  43.       // TODO Auto-generated method stub
  44.       int x, y;
  45.       x = (int)motionEvent.getX();
  46.       y = (int)motionEvent.getY();
  47.       pixel.setText("Pixel: " + Integer.toString(x)+", "+ Integer.toString(y));
  48.       int pix = bMap.getPixel(x, y);
  49.       int h[] = RGBreturn(pix);
  50.       text.setText("A= "+Integer.toString(h[3])+" R= "+Integer.toString(h[0])+" G= "+Integer.toString(h[1])+" B= "+Integer.toString(h[2]));
  51.       return true; //means event have been processed
  52.      }
  53.        
  54.        };
  55.        private View.OnTouchListener OnTouchListener1
  56.        = new View.OnTouchListener(){
  57.      
  58.      @Override
  59.      public boolean onTouch(View view, MotionEvent motionEvent) {
  60.       // TODO Auto-generated method stub
  61.       pixel.setText("ERROR FUERA DE LA IMAGEN");
  62.       return true; //means event have been processed
  63.      }
  64.        
  65.        };
  66. }

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:01.