2010-06-11 21 views
6

Tengo un programa en el que me gustaría colocar una imagen en las coordenadas de un evento táctil. Ahora tengo las coordenadas. Solo necesito ayuda para colocar una imagen allí. Usaré un dibujable.Colocar la imagen en las coordenadas Android

Editar ** También quiero superponerlo sobre otra imagen. No puedo encontrar ninguna documentación sobre esto más que nunca. Yo pensaría que debería ser fácil.

¿Alguien me puede ayudar?

EDITAR **** Entendido, ahora sólo tengo que encontrar la manera de llegar al centro de la imagen en el punto de contacto y no a la esquina superior izquierda:

final View touchView2 = findViewById(R.id.ImageView02); 
    touchView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Log.v("x,y",event.getY()+","+event.getX()); 
      touchView2.bringToFront(); 
      int y = (int)event.getY(); 
      int x = (int)event.getX(); 

      touchView2.layout(x, y, x+48, y+48); 
       return true; 
     } 
    }); 

Respuesta

0
Drawable recycle_bin = context.getResources().getDrawable(android.R.drawable.ic_menu_delete); 
int w = recycle_bin.getIntrinsicWidth(); 
int h = recycle_bin.getIntrinsicHeight(); 
int x = getWidth()/2 - w/2; 
int y = getHeight() - h - 5; 

recycle_bin.setBounds(x, y, x + w, y + h); 
recycle_bin.draw(canvas); 

que es cómo dibujo un icono de papelera de reciclaje en el centro inferior

+0

No funciona para mí aquí, pero gracias. – shaneburgess

0

Para colocar una imagen en ciertas coordenadas, deberá dibujar la imagen en el lienzo. Para obtener las coordenadas del evento táctil utilice el siguiente código:

@Override 
public void onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_MOVE) { 
     mTouchX = event.getX(); 
     mTouchY = event.getY();//stores touch event 
    } else { 
     mTouchX = -1; 
     mTouchY = -1; 
    } 
    super.onTouchEvent(event); 
} 
+0

tengo la coordenada cliqueada, ¿cómo coloco una imagen en la posición cliqueada? No puedo usar setX() y setY() ya que mi aplicación es compatible con API-10. –

4

lugar la imagen que desee en la parte superior en el xml de su aplicación. la pusieron invisible o ido ...

reemplazar:

final View touchView2 = findViewById(R.id.ImageView02); 

clases antes del constructor:

ImageView touchView2; 

y en el constructor método (onCreate)

touchView2 = (ImageView) findViewById(R.id.ImageView02); 

Ahora configura un onTouchEventListener al obtener todos los toques en la pantalla. Si esas coordenadas están en una posición que le gusta, llame al método placeImage con las coordenadas X e Y presionadas. este método se coloca fuera del constructor de la clase (onCreate) es abajo primer método debe ser adecuado:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    super.onTouchEvent(event); 
    int eventAction = event.getAction(); 
    switch(eventAction) { 
     case MotionEvent.ACTION_DOWN: 
      float TouchX = event.getX(); 
      float TouchY = event.getY(); 
      placeImage(TouchX, TouchY); 
      break; 
    }   
    return true; 
} 

ahora el método placeImage:

private void placeImage(float X, float Y) { 
    int touchX = (int) X; 
    int touchY = (int) Y; 

    // placing at bottom right of touch 
    touchView2.layout(touchX, touchY, touchX+48, touchY+48); 

    //placing at center of touch 
    int viewWidth = touchView2.getWidth(); 
    int viewHeight = touchView2.getHeight(); 
    viewWidth = viewWidth/2; 
    viewHeight = viewHeight/2; 

    touchView2.layout(touchX - viewWidth, touchY - viewHeight, touchX + viewWidth, touchY + viewHeight); 
} 

Esto debería ser su respuesta ... ahora es suficiente para hacer que el touchView sea visible:

touchView2.setVisibility(0); 
Cuestiones relacionadas