2012-03-29 12 views
0

Ich habe eine Aktivität, wo ich zwei imagesViews habe.OnClick und onTouch

Das zu imagesViews hat onClickListener, weil ich wissen muss, auf welches imageView geklickt wurde. Nachdem ich auf das gewählte Bild geklickt habe, erhalte ich das Ergebnis, welches Bild angeklickt wurde.

Ich weiß, brauche das gleiche Ergebnis, aber ich muss wissen, wo genau ich auf dieses Bild klicken. Ich brauche genaue Koordinaten, auf die diese ImageView geklickt wurde. Ich weiß, dass ich in der onTouch-Methode Funktionen habe, die ich brauche.

Kann ich OnClick Methode auf OnTouch ändern? Oder in onClick können genaue Koordinaten erhalten?

+0

können Sie OnTouch Ereignis verwenden ... siehe diesen Link [1]: http://stackoverflow.com/questions/9122679/difference-between-ontouch-and-onclick-android –

Antwort

4

Es besteht keine Notwendigkeit für Sie das onClick Ereignis verwenden, da Sie einfach den Klick mit dem onTouch Rückruf erfassen können. Ein Klick ist eine Folge von einer ACTION_DOWN Aktion, mehreren ACTION_MOVE Aktionen und einer ACTION_UP Aktion. Diese können mit der Methode event.getAction() erworben werden. Wenn Sie ein ACTION_DOWN-Ereignis und dann ein ACTION_UP-Ereignis erhalten, bedeutet dies, dass der Benutzer gerade auf View geklickt hat. Sie können auch die Zeit zwischen diesen Ereignissen messen, um sicherzustellen, dass es sich um einen einfachen Klick handelt, nicht um einen langen. Und natürlich können Sie die Methoden event.getX() und event.getY() verwenden, um den genauen Berührungspunkt zu erhalten. Hoffe das hilft.

3

Sie können OnTouch() -Methode für Verbindung zu setzen Koordinaten

touchView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     System.out.println("Touch coordinates : " + 
      String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); 
      return true; 
    } 
});