Frage zu Mutlitouch/onTouchEvent

  • 2 Antworten
  • Letztes Antwortdatum
D

DroidGuy

Neues Mitglied
0
Hi,

hätte ne Frage bezühlich Mutlitouch Berührungen auf dem Display. Und zwar teste ich das gerade mit 2 Textviews , die quasi als Hintergrund nen Button.png haben und somit einen Button simulieren sollen. Sobald ich mit dem Finger über diesen Textview fahre, soll ein Sound abgespielt werden, aber nur einmal. Sobald der Finger aus dem Bereich des Textviews bewegt wird und anschließend wieder hinein, soll wieder der Sound abgespielt werden (1x), das soll auch beim Fingertippen auf das Display funktionieren und auch bei Multitouch Berührungen. Also als ob man mit dem Finger über virtuelle Klaviertasten fährt.

Hier ein kleiner Auschnitt...das Problem ist, dass der Log jedesmal angezeigt wird wenn die onTouchEvent() Methode aufgerufen wird und der Finger sich über dem Textview bewegt, also quasi immer denn wenn ich den Finger minimal bewege...

Hat vielleicht jemand ne Idee wie man das beheben kann?

Code:
@Override
    public boolean onTouchEvent(MotionEvent event) {
        
        boolean [] newButtonStatesArray = new boolean [buttonStatesArray.length];
        Rect buttonRect = null;
        for(int touchIndex = 0; touchIndex < event.getPointerCount(); touchIndex++) {
            
            int x = (int) event.getX(touchIndex);
            int y = (int) event.getY(touchIndex);
            
            for(int buttonIndex = 0; buttonIndex < buttonList.size(); buttonIndex++) {
                
                View button = buttonList.get(buttonIndex); 
                int[] coordinates = new int[2];
                button.getLocationOnScreen(coordinates);
                int buttonX = coordinates[0];
                int buttonY = coordinates[1];

                buttonRect = new Rect(buttonX, buttonY, buttonX + button.getWidth(), buttonY + button.getHeight());
   

                if(buttonRect.contains(x, y)) {     
                    Log.d("onTouchEvent()", "Button: " + getResources().getResourceEntryName(buttonList.get(buttonIndex).getId()) + " is touched");
                    
                }
            }
        }
}
 
Hallo,
ohne danach zu suchen bin ich eigentlich der Meinung, das es für Textviews so was wie onEnter und onLeave listener gibt.

So wie du die Implementierung Momentan hast würde es jedoch reichen, das du einen Boolean setzt sobald du den Sound einmal abgespielt hast, und den Sound solang nichtmehr abspielst wie du noch auf dem Button bist….

Naja Code sagt mehr als 1000 Worte:


Code:
    [FONT=&quot]Bool pressed=false;//Global anlegen[/FONT]
  
  [FONT=&quot]if(buttonRect.contains(x, y)) [/FONT]
  [FONT=&quot]{    
         if([/FONT][FONT=&quot]!pressed[/FONT])
      {
[FONT=&quot]                Log.d("onTouchEvent()", "Button: " + getResources().getResourceEntryName(buttonList.get(buttonIndex).getId()) + " is touched");[/FONT]
          [FONT=&quot]pressed = true;  
         }               [/FONT]
  [FONT=&quot]}[/FONT]
  [FONT=&quot]else[/FONT]
  [FONT=&quot]{[/FONT]
      [FONT=&quot]pressed = false;                 [/FONT]
  [FONT=&quot]}
[/FONT]
 
Zuletzt bearbeitet:
Danke dafür,

habe es mittlerweile gelöst. Sowas wie onEnterListener oder onLeaveListener habe ich nicht gefunden...
 
Zuletzt bearbeitet:
Zurück
Oben Unten