2

ボタンを押している間、何度も手紙を印刷したい。たとえば、R2秒間押すと、次のように表示されます。 "RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"

私はこれを試しました:

public void addListenerOnUP() {
    Button b = (Button) findViewById(R.id.up);
    b.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            String p = "R";

            //print ...
            return true;
        }
    });
}

ただし、ユーザーが画面に触れている間ではなく、ユーザーが指を動かしたときにのみ機能します。「R」を繰り返すにはどうすればよいですか?

4

1 に答える 1

2


動かさずに使いたい指を動かすと動作します

コールバックを使用する必要があります。ハンドラーとランナブルを使用すると、ユーザーの指が下がっているときに、設定された間隔で新しい文字を印刷できます。(おそらく100ミリ秒に1回?)

private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // Print out your letter here...

        // Call the runnable again
        handler.postDelayed(this, 100);
    }
}

ユーザーの指が下にあるときにのみ文字を印刷します。

b.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()){
        case MotionEvent.ACTION_DOWN:
            // Start printing the letter in the callback now 
            handler.post(runnable);
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            // Stop printing the letter
            handler.removeCallbacks(runnable);
        }
        return true;
    }
});
于 2013-03-02T16:04:26.347 に答える