【问题标题】:CountDown Timer on activity start活动开始倒计时
【发布时间】:2014-02-11 17:24:13
【问题描述】:

如何管理倒计时以立即开始活动并在时间到时开始新活动?提前致谢

编辑: 活动包含一个按钮。用户应该按下它直到时间到,否则另一个活动开始

【问题讨论】:

  • 我不明白这类问题......对我来说,您似乎已经从问题中描述了解决方案
  • 你说的是启动画面吗?
  • @user3291365,不是闪屏

标签: java android countdown


【解决方案1】:

试试这个代码

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
        //start new activity
     }
  }.start();

【讨论】:

    【解决方案2】:

    您可以通过两种方式实现这一目标

    方法 1: 创建一个线程并在重定向到主应用程序屏幕之后设置睡眠时间。 方法2:给handler设置时间,调用Handler().postDelayed,设置时间后直接调用runnable的run方法,重定向到主应用界面。

    我们可以用这种给定的方式来实现我们可以为 MainScreen 编写代码的地方

    import android.os.Bundle;
    import android.os.Handler;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    
    public class MainScreen extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.mainscreen);
    
    // METHOD 1     
    
             /****** Create Thread that will sleep for 10 seconds *************/        
            Thread background = new Thread() {
                public void run() {
    
                    try {
                        // Thread will sleep for 10 seconds
                        sleep(10*1000);
    
                        // After 10 seconds redirect to another intent
                        Intent i=new Intent(getBaseContext(),AnotherScreen .class);
                        startActivity(i);
    
                        //Remove activity
                        finish();
    
                    } catch (Exception e) {
    
                    }
                }
            };
    
            // start thread
            background.start();
    
    //METHOD 2  
    
            /*
            new Handler().postDelayed(new Runnable() {
    
                // Using handler with postDelayed called runnable run method
    
                @Override
                public void run() {
                    Intent i = new Intent(MainScreen.this, AnotherScreen.class);
                    startActivity(i);
    
                    // close this activity
                    finish();
                }
            }, 10*1000); // wait for 10 seconds
            */
        }
    
        @Override
        protected void onDestroy() {
    
            super.onDestroy();
    
        }}
    

    AnotherScreen 代码如下

        import android.app.Activity;
    import android.os.Bundle;
    
    public class AnotherScreen extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.anotherScreen); 
    
        } 
    
        @Override
        protected void onDestroy() {
    
            super.onDestroy();
    
        }
    }
    

    另一个例子请访问http://www.androidhive.info/2013/07/how-to-implement-android-splash-screen-2/

    https://codereview.stackexchange.com/questions/31295/review-request-android-countdowntimer-activity

    【讨论】:

    • 很酷的解决方案,非常简单!但是有没有办法在屏幕上显示一个计时器(与线程连接)?
    • 是的,你可以更新一些小部件或文本视图,这取决于你的实现!!
    • 如果我使用特殊按钮移动到另一个活动,是否有任何方法可以停止或中断方法 2 中的处理程序?我添加了一个按钮来启动另一个活动,如果它没有被点击,那么处理程序会这样做,但是如果我使用按钮,那么处理程序会继续工作,如何修复它?谢谢!
    • 是的,像这样 handler.removeMessages(what);或 mHandler.removeCallbacksAndMessages(HandleUpdateInd.class);请访问stackoverflow.com/questions/5038038/how-to-stop-the-handler
    【解决方案3】:

    这是您正在寻找的答案 spalshActivity

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);
        try {
            TimerTask timerTask = new TimerTask() {
    
                @Override
                public void run() {
                    Intent i = new Intent(SplashScreen.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
    
                }
            };
            Timer timer = new Timer();
            timer.schedule(timerTask, 300);// DElay of 300 mil sec
        } catch (Exception e) {
    
            Log.e("ERROR in Splash Screen", e.toString());
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多