# Fragen zu onLongClick?



## bruce85 (10. Okt 2013)

Hallo,
ich bin gerade an einem Spiel und möchte, wenn ich z.B. auf einen Button halte, dass nach ca. 2 Sekunden etwas passiert.

Ich arbeite mit Canvas und die Buttons lade ich als Bitmap und möchte gerne bei onTouchEvent eine funktion schreiben, die beim halten eines Buttons von ca. 2 Sekunden aufgerufen wird.

Wie könnte ich das ambesten lösen?

Ich bedanke mich schonmal im Voraus.

MfG


----------



## eMmiE (14. Okt 2013)

Hi,

einfach mal so geschrieben würde ich sagen, dass wenn du deine Maustaste anfängst zu drücken und auf dem Button bist, dass dann eine long gesetzt wird und pro neuem Durchlauf,  guckst du, ob die momentane Zeit (System.currentTimeMillis()) minus die Startzeit > 2000 (2*1000) ist.
Wenn das so ist, dann rufst du einfach deine Methode auf.

Für den Fall, dass die Maustaste losgelassen wird oder der Zeiger aus dem Bereich des Buttons verschwindet, setzt du einfach die Zeit auf -1 (-> Das musst du natäürlich auch in der if-Abfrage, ob größer 2000 berücksichtigen)

Gruß eMmiE


----------



## dzim (14. Okt 2013)

Bietet Canvas überhaut eine Methode dazu? Soweit ich die API überblicke, nein. Es ist also mehr eine Art Container, den du dynamisch "vollpinseln" kannst. Das ganze muss also in irgendeiner Form in einen View gekapselt werden.
Ich habe noch nie mit Canvas gearbeitet (und hüte mich auch davor ;-) ), aber ich denke der Ansatz wäre, einen View zu erweitern und in *dessen* Click-Methoden auf deine Eingabe zu reagieren. Du musst dann "nur" die Koordinaten des Canvas auf den View mappen. Wenn du also z.B. die setOnLongClickListener-Methode des Views verwendest, musst du keine Kunststücke, wie im letzten Post beschrieben, machen (nichts für ungut eMmiE!).


----------

