2014-03-27 47 views
1

我的活動在10秒後打開另一個活動。我知道如何在一段時間後開啓另一項活動。但是我想要做的也是每秒鐘計數,以便我可以將其顯示給用戶。我怎樣才能做到這一點?在我的活動中,我有一個textview,我想顯示倒數。倒計時結束後顯示倒計時並更改爲其他活動。

public class RestingActivity extends Activity{ 
    private Handler mHandler = new Handler(); 

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

    mHandler.postDelayed(mLaunchTask, 10000); 
} 

public void skipRestTime(View view) 
{ 
    finish(); 
} 


private Runnable mLaunchTask = new Runnable() { 
    public void run() { 
     finish(); // Closing the activity 
    } 
}; 

} 

回答

2

請檢查我的答案。它爲我工作很好。希望它對你有幫助。請嘗試讓我知道。由於

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:background="#0090FF" 
    android:padding="10dp" 
    android:keepScreenOn="true" > 

    <TextView 
    android:id="@+id/txtCountDown" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="30dp" 
    android:textColor="#fff" /> 

</RelativeLayout> 

MainActivity.java:

import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    private static TextView txtCountDown; 
    private static CountDownTimer countDownTimer = null; 
     private static final long startTime = 120 * 1000; 
     private static final long interval = 1 * 1000; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     txtCountDown = (TextView) findViewById(R.id.txtCountDown); 
     countDownTimer = new MyCountDownTimer(startTime, interval); 
     if(txtCountDown!=null){ 
      txtCountDown.setText(String.valueOf(startTime/1000)); 
     } 
     countDownTimer.start(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public class MyCountDownTimer extends CountDownTimer { 

     public MyCountDownTimer(long startTime, long interval) { 
      super(startTime, interval); 
     } 

     @Override 
     public void onFinish() { 
      if(txtCountDown!=null){ 
      txtCountDown.setText("Time's up!"); 
      } 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      if(txtCountDown!=null){ 
      txtCountDown.setText("" + millisUntilFinished/1000); 
      } 
     } 
    } 
} 
+0

我試過了,一切正常。但是,當倒數一秒鐘時,需要更多的時間來結束活動。看起來它增加了一秒鐘。你也有同樣的問題嗎? – EM10

1

你可以使用CountDownAnimation class。您只需要通過顯示倒數的TextView並設置CountDownListener。然後,執行onCountDownEnd來更改活動。

我使用的是Handler,這比CountDownTimer準確得多。當我執行CountDownAnimation時,我對這些類進行了時間測試。