2010-06-11 3 views
6

J'ai un programme dans lequel je voudrais placer une image aux coordonnées d'un événement tactile. J'ai les coordonnées maintenant j'ai juste besoin d'aide pour placer une image là. Je vais utiliser un dessinable.Placez l'image à des coordonnées Android

Modifier ** Je souhaite également le superposer sur une autre image. Je ne peux trouver aucune documentation sur ce que jamais. Je pense que ça devrait être facile.

Quelqu'un peut-il m'aider?

EDIT **** Got, maintenant je viens de comprendre comment obtenir le milieu de l'image à l'endroit tactile et pas le coin en haut à gauche:

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; 
     } 
    }); 

Répondre

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); 

qui est comment je dessine une icône de la corbeille en bas au centre

+0

Pas tout à fait travailler pour moi ici, mais merci. – shaneburgess

0

Pour placer une image à certaines coordonnées, vous devrez dessiner l'image sur la toile. Pour obtenir les coordonnées de l'événement tactile, utilisez le code suivant:

@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

J'ai le co-ordonné cliqué, comment je place une image à la position cliquée? Je ne peux pas utiliser setX() et setY() car mon application supporte API-10. –

4

Placez l'image que vous voulez sur le dessus dans le xml de votre application. mis invisible ou disparu ...

remplacer:

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

avant les classes constructeur:

ImageView touchView2; 

et dans le constructeur méthode (onCreate)

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

maintenant configurer un onTouchEventListener en mettant toutes les touches sur l'écran. Si ces coordonnées sont dans une position que vous aimez appeler la méthode placeImage avec les coordonnées X et Y pressés. cette méthode est placé à l'extérieur du constructeur de la classe (onCreate) si la première méthode ci-dessous doit être droite:

@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; 
} 

maintenant la méthode 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); 
} 

Cela devrait être votre réponse ... maintenant vous avez seulement pour rendre le contact visible:

touchView2.setVisibility(0); 
Questions connexes