Продолжает считать кнопку - PullRequest
2 голосов
/ 20 февраля 2012

Я пытаюсь создать кнопку, которая при удерживании добавит к ней 1 или любое число, пока кнопка не будет отпущена. Моя цель состоит в том, чтобы создать экранный контроллер клавиш курсора для перемещения по кнопке / растровому изображению. Код ниже добавляет 1 только при нажатии вниз. Как заставить его считать его непрерывно?

Спасибо за помощь

package s.apps.kontroler;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.TextView;

public class Test extends Activity implements OnTouchListener {

    Button up;
    TextView text;
    int countup;

    boolean isDown = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        up = (Button) findViewById(R.id.button1);
        text = (TextView) findViewById(R.id.textView1);

        up.setOnTouchListener(this);

    }

    public boolean onTouch(View arg0, MotionEvent event) {
        // TODO Auto-generated method stub

        int i = event.getAction();

        if (i == MotionEvent.ACTION_DOWN) {
            isDown = true;

            if (isDown) {
                countup++;
                text.setText("Count is: " + countup);
            }

            else if (i == MotionEvent.ACTION_UP) {
                isDown = false;
            }

        }
        return true;
    }
}

Ответы [ 2 ]

5 голосов
/ 20 февраля 2012

Это должно сделать это:

private static final int INTERVAL=500;

private Handler handler= new Handler();

private Runnable incrementRunnable = new Runnable() {
    @Override
    public void run() {
        countup++;
        text.setText("Count is: " + countup);
        handler.postDelayed(this, INTERVAL);
    }
 }


public boolean onTouch(View arg0, MotionEvent event) {
    int i = event.getAction();
    if (i == MotionEvent.ACTION_DOWN) {
        incrementRunnable.run();
    } 
    else if (i == MotionEvent.ACTION_UP) {
        handler.removeCallbacks(incrementRunnable);
    }
    return true;
}
2 голосов
/ 20 февраля 2012

Как насчет

    Calendar c = Calendar.getInstance(); 
    int i = c.get(Calendar.SECOND);
    While(//button is held )
    {if(c.get(Calender.SECOND)>i)
    i++;//addto variable}
...