1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Steuerelement a la NumericUpDown - Button lange halten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von husvun41, 25.10.2010.

  1. husvun41, 25.10.2010 #1
    husvun41

    husvun41 Threadstarter 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:

  2. Fr4gg0r, 25.10.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    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;
    }
    }
     
  3. husvun41, 25.10.2010 #3
    husvun41

    husvun41 Threadstarter Gast

    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]
            }
        }
     
  4. Fr4gg0r, 25.10.2010 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    hast du versucht immer true zurückzugeben?
     
  5. husvun41, 25.10.2010 #5
    husvun41

    husvun41 Threadstarter Gast

    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.
     

Diese Seite empfehlen