AutoResume CountDownTimer

我在我的应用程序中有一个CountDownTimer。我正在为我的学校项目开发一款游戏。而我在如何自动恢复我的倒计时器方面遇到困难。AutoResume CountDownTimer

所以这是我多么希望我的countdowntimer做: 点击imageview的触发countdowntimer开始(工作)>单击imageview的停止/暂停countdowntimer> autoresume countdowntimer 10秒后(我的大问题T_T)。

我需要一个autoresume,因为我正在开发一款游戏,那么,通常这是一款游戏提供的功能,我认为呢?在我使用的代码上,点击暂停图像查看后,计时器暂停。但是当我再次点击触发开始的图像按钮时,它会回到59,而不是当我点击暂停时的时间。

基本上,这是我的第一个应用程序。我现在正在使用Android Studio(我之前使用Eclipse Juno)。我非常需要这些帮助。 TIA :)

public class TimeAttack extends Activity {  

\t TextView timer;

\t

\t private CountDownTimer countDownTimer;

\t private boolean timeHasStarted = false;

\t @Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.time_attack);

\t \t timer = (TextView) this.findViewById(R.id.timer);

\t \t timer.setText("00:01:00");

\t \t countDownTimer = new MyCountDownTimer(60000,1000);

\t \t

\t \t \t \t

\t \t blizzard.setOnClickListener(new View.OnClickListener() {

\t \t \t

\t \t \t @Override

\t \t \t public void onClick(View v) {

\t \t \t \t

\t \t \t // \t this button should pause the time, and its working YAY!

\t \t \t \t countDownTimer.cancel();

\t \t \t \t \t timeHasStarted = false; \t

\t \t \t \t

\t \t \t }

\t \t });

\t

\t \t //CustomClickListener

\t \t OnClickListener myCommoClickListner = new OnClickListener(){

\t \t \t @Override

\t \t \t public void onClick(View arg0) {

//if an imagebutton is clicked, it will trigger the countdowntimer to start its countdown

\t \t \t \t \t if (!timeHasStarted) {

\t \t \t \t countDownTimer.start();

\t \t \t \t timeHasStarted = true;

\t \t \t \t \t }

}

//COUNTDOWNTIMER

@TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") public class MyCountDownTimer extends CountDownTimer{

\t \t public MyCountDownTimer(long millisInFuture, long countDownInterval){

\t \t \t super(millisInFuture, countDownInterval);

\t \t }

\t \t @TargetApi(Build.VERSION_CODES.GINGERBREAD) @SuppressLint("NewApi") @Override

\t \t public void onTick(long millisUntilFinished) {

\t \t \t // TODO Auto-generated method stub

\t \t \t long millis = millisUntilFinished;

String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),

TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),

TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));

System.out.println(hms);

timer.setText(hms);

\t \t \t

\t \t }

\t \t @Override

\t \t public void onFinish() {

\t \t \t // TODO Auto-generated method stub

\t \t \t timer.setText("Time's Up!");

\t \t }

回答:

有不同的方法来做到这一点。

  1. 您可以在UI线程中使用计时器本身。
  2. 你可以在单独的线程中使用定时器(这是一个很好的做法)。它的东西就像。

    线程定时器=新的Thread(){ 公共无效的run(){ 尝试 { 睡眠(10000); (InterruptedException e) { e.printStackTrace(); (!timeHasStarted){ countDownTimer.start(); timeHasStarted = true; } } }; timer.start();

  3. 使用Handler来完成这项工作。代码如下

    new Handler().postDelayed(new Runnable() { 

    /*

    * Showing splash screen with a timer. This will be useful when you

    * want to show case your app logo/company

    */

    @Override

    public void run() {

    // This method will be executed once the timer is over

    // Start your app main activity

    if (!timeHasStarted) {

    countDownTimer.start();

    timeHasStarted = true;

    }

    }, 10000); //10 seconds

很抱歉的格式,但我认为你可以管理。

以上是 AutoResume CountDownTimer 的全部内容, 来源链接: utcz.com/qa/259833.html

回到顶部