Steuerelement a la NumericUpDown - Button lange halten

H

husvun41

Gast
Hallo Leute!

Ich habe folgendes Problem:
Ich habe aus zwei Buttons und einem EditText ein Steuerelement a la NumericUpDown gebastelt.

Der Wert verändert sich auch wie gewünscht beim Klicken der Buttons.
Jedoch schaffe ich es einfach nicht, dass bei langem Halten eines Buttons der Wert sich gleichmäßig schnell verändert. (Also lange halten bis z.B. 100 erreicht wurde).

Ich hoffe, ihr könnt mir helfen.

Bis dann, IchBinzz
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    2,3 KB · Aufrufe: 752
private final Handler handler = new Handler();
private boolean pressing;
private int value;
private EditText counter;
private final Runnable increase = new Runnable(){
public void run(){
value++;
counter.setText(Integer.toString(value);
if(pressing)handler.postDelayed(800, this);
}
}
...

public void onTouch(View v, MotionEvent event){
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
pressing = true;
handler.post(increase);
break;
case MotionEvent.ACTION_UP:
pressing = false;
break;
}
}
 
Danke!

Funktioniert nach kleinen Änderungen wunderbar!

Kleine Frage hinterher:
Wie kann ich den Button "aufblinken" lassen?
Also: ACTION_DOWN: farbig ... ACTION_UP: grau, wie bei normalen OnClick Events.

Ich habs so probiert: (funzt aber nicht)
Code:
public boolean onTouch(View v, MotionEvent event) {
        [...]
        
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                pressing = true;
                handler.post(increaseDecrease);
                [COLOR=Red]return false;[/COLOR]
            case MotionEvent.ACTION_UP:
                pressing = false;
                delay = 900;
                [COLOR=Red]return true;[/COLOR]
            default: 
                [COLOR=Red]return true;[/COLOR]
        }
    }
 
hast du versucht immer true zurückzugeben?
 
Naja, das läuft auf das selbe hinaus, wie ich es davor hatte:

Code:
...
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                pressing = true;
                handler.post(increaseDecrease);
                break;
            case MotionEvent.ACTION_UP:
                pressing = false;
                delay = 900;
                break;
        }
        return true;
}
Es ist nur so, dass mein Button, wenn man kurz oder lange drückt, die ganze Zeit nur grau bleibt.
 

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
337
swa00
swa00
MES
Antworten
10
Aufrufe
819
MES
MES
S
Antworten
17
Aufrufe
554
jogimuc
J
Zurück
Oben Unten