jle
jle

Reputation: 696

android - start an activity onTouch

In my app I have a countdown which counts from five to one. At the moment, the counter starts as soon as the activity is started. What I want is to stay at 5 seconds and wait to count down until the screen is touched. So the countdown timer should be started which a touch event.

    public class MainActivity extends Activity implements OnGestureListener {
    private static final String FORMAT = "%02d:%02d";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);

        new CountDownTimer(5000, 10) {
            public void onTick(long millisUntilFinished) {
                text.setText("" + String.format("%02d:%03d",
                        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
                        TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished))
                ));

                if (animationRunning) {
                    cancel();
                }
            }

            public void onFinish() {
                text.setText("done!");
            }
        }.start();
    }


    @Override
    public boolean onTouchEvent(MotionEvent touchevent) {

    }
}

Upvotes: 0

Views: 206

Answers (2)

Babajide Apata
Babajide Apata

Reputation: 693

Move this section of code to your onTouchEvent, because it's on activity create that is why its starting when your activity starts

new CountDownTimer(5000, 10) {
    public void onTick(long millisUntilFinished) {
        text.setText("" + String.format("%02d:%03d",
                TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
                TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished))
        ));

        if (animationRunning) {
            cancel();
        }
    }

    public void onFinish() {
        text.setText("done!");
    }
}.start();

you should be fine

Upvotes: 0

Manohar
Manohar

Reputation: 23394

Place your count down timer inside onTouch like below

public class MainActivity extends Activity implements OnGestureListener {
    private static final String FORMAT = "%02d:%02d";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);


    }


    @Override
    public boolean onTouchEvent(MotionEvent touchevent) {
        new CountDownTimer(5000, 10) {
            public void onTick(long millisUntilFinished) {
                text.setText("" + String.format("%02d:%03d",
                        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)),
                        TimeUnit.MILLISECONDS.toMillis(millisUntilFinished) - TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished))
                ));

                if (animationRunning) {
                    cancel();
                }
            }

            public void onFinish() {
                text.setText("done!");
            }
        }.start();
    }
}

Upvotes: 1

Related Questions