Wenn ein Button gedrückt ist, sollte es die Funktion immer wiederholen. Wie funktioniert das mit zwei Buttons?

  • Antworten:14
  • Bentwortet
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

05.03.2013, 20:56:00 via App

1bv.setOnTouchListener(otl_conn); class TouchListenerConn implements OnTouchListener
bv2.setTochListener(otl_conn);
Du setzt einfach den zweiten button auch aud die Funktion, oder willst du,dass wenn button1 gedrückt wird deine Funktion startet und bei button2 klick beendet wird?
Vielleich solltest du deine Grundfrage einmal posten, damit dir besser geholfen werden kn.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Yannick M
  • Forum-Beiträge: 46

05.03.2013, 21:07:15 via App

Ich will 2 Buttons, die zwei verschiedene Rotate Animation ausführen ( und das solange, wie darauf gedrückt wird).

Aber wie programmiere ich, was bei welchem Button ausgeführt wird ?

Vielen Dank für eure Hilfe

— geändert am 05.03.2013, 21:09:10

Antworten
Yannick M
  • Forum-Beiträge: 46

06.03.2013, 17:31:32 via Website

Vielen Dank für euer Hilfe.
Jedoch zeigt es mir noch einen Fehler an.
Bei mir zeigt es in der zweiten Zeile "Syntax error on token" an. (Punkt und otl_connzwei sind rot unterstrichen) Aber warum, ist doch alles richtig.
Die Buttons habe ich weiter oben deklariert. Die sind für das nicht verantwortlich, oder?

1private OnTouchListener otl_connzwei = (OnTouchListener) new TouchListenerConnzwei();
2 mybuttonrechts.setOnTouchListener(otl_connzwei);
3 class TouchListenerConnzwei implements OnTouchListener
4 {

Antworten
impjor
  • Forum-Beiträge: 1.793

06.03.2013, 18:36:36 via App

Dein Code ist irgendwie ziemlich komisch.

Mach es doch so:
deinButton.setOnTochListener(
new onTochListener() {
public boolean onTouch(...) {
// Code
}
});

— geändert am 06.03.2013, 18:37:49

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Yannick M
  • Forum-Beiträge: 46

06.03.2013, 19:58:26 via Website

Vielen Dank

So gibt es mir keine Fehler an, jedoch wenn man auf die Buttons drückt passiert nichts mehr.
Das onClick am Anfang finde ich schon ein bisschen komisch, aber sonst zeigt es ein Fehler an.

1@Override
2 public void onClick(View v) {
3
4
5
6 mybuttonlinks.setOnTouchListener(new OnTouchListener(){
7
8 public boolean onTouch(View v, MotionEvent event){
9 switch(event.getAction()){
10 case MotionEvent.ACTION_DOWN:
11 rotate = new RotateAnimation(jetzt, jetzt+drehung, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
12 rotate.setFillEnabled(true);
13 rotate.setFillAfter(true);
14 rotate.setDuration(200);
15 delphin.startAnimation(rotate);
16 jetzt = jetzt+drehung;
17 break;
18 case MotionEvent.ACTION_UP:
19
20 break;
21 }
22 return true;
23 }
24
25
26
27 });
28
29 mybuttonrechts.setOnTouchListener(new OnTouchListener(){
30
31 public boolean onTouch(View v, MotionEvent event){
32 switch(event.getAction()){
33 case MotionEvent.ACTION_DOWN:
34 rotate = new RotateAnimation(jetzt, jetzt-drehung, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
35 rotate.setFillEnabled(true);
36 rotate.setFillAfter(true);
37 rotate.setDuration(200);
38 delphin.startAnimation(rotate);
39 jetzt = jetzt-drehung;
40 break;
41 case MotionEvent.ACTION_UP:
42
43 break;
44 }
45 return true;
46 }
47
48
49
50 });
51
52
53}}

Antworten
impjor
  • Forum-Beiträge: 1.793

06.03.2013, 20:14:24 via Website

Yannick M

Das onClick am Anfang finde ich schon ein bisschen komisch, aber sonst zeigt es ein Fehler an.
Das onClick am Anfang ist auch sinnlos, und der Grund warum nichts passiert. Was soll das bitte da???

Das muss natürlich weg. Der Fehler kommt wahrscheinlich desahlb, da ja
1onClick(..) {
steht, also muss auch ganz unten eine Klammer weg, dann sollte es auch keinen Fehler geben.
Der Gesamte Code muss dann in die onCreate-Methode deiner Activity hineinkopiert werden.

Mein Tipp: Du solltest dich unbedingt in den Grundlagen der Android/Java-Programmierung festigen.
Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Yannick M
  • Forum-Beiträge: 46

06.03.2013, 20:58:47 via App

So funktionieren die Buttons wieder. Danke !
Es führt es einmal aus und wenn ich los lasse und das nächste mal drauf drücke ein zweites mal.
Aber wie mache ich das jetzt, dass es die Funktion solange aneinander ausführt (immer wiederholen) bis ich wieder los lasse?

Antworten
Andreas Weichert
  • Forum-Beiträge: 287

07.03.2013, 09:47:12 via Website

Also wie ich es verstehe will Du nach Touchdown solange peroidisch was ausführen lassen, bis das TouchUp kommt.
Dafür brauchst Du eine Timerfunktion. Ich mache das immer mit einem Handler

Handler RepeatHandler = new Handler()
{
@Override public void handleMessage(Message msg)
{
// Hier Code für nächsten Animationschritt
sendEmptyMessageDelayed(0, 100); // in Millisekunden
}

public boolean onTouch(View v, MotionEvent event){
switch(event.getAction()){

case MotionEvent.ACTION_DOWN: RepeatHandler.sendEmptyMessage(0); break;
case MotionEvent.ACTION_UP: RepeatHandler.removeMessages(); break;

}
return true;
}

Das verwende ich so und es funktioniert.
Habe allerdings das Problem, dass, wenn man nach dem Touchdown den Finger vom Button wegschiebt, das TouchUp nicht mehr kommt.
Hat jemand dafür eine Lösung ?

— geändert am 07.03.2013, 09:57:32

Antworten
Yannick M
  • Forum-Beiträge: 46

07.03.2013, 17:44:06 via Website

Vielen Dank!! Es funktioniert mit dem Handler.

Antworten
Timo D.
  • Forum-Beiträge: 182

07.03.2013, 18:10:47 via Website

Andreas Weichert
Danke auch für die Sterne :grin:
Welche Sterne meinst du? Lassen sich Beiträge mit Sternen bewerten?

— geändert am 07.03.2013, 18:11:00

Sichern Sie Ihr Smartphone gegen Diebstahl und erhöhen Sie die Chance, es wiederzufinden. Jetzt neu: Guardian - Anti-Diebstahl Guardian - Anti-Diebstahl Pro https://play.google.com/store/apps/details?id=de.tapps.guardian.pro Guardian - Anti-Diebstahl Trial https://play.google.com/store/apps/details?id=de.tapps.guardian.free

Antworten
Yannick M
  • Forum-Beiträge: 46

08.03.2013, 18:29:40 via Website

Bitte

— geändert am 08.03.2013, 18:30:39

Antworten