2014-03-27 2 views
1

내 활동은 10 초 후에 다른 활동을 엽니 다. 나는 얼마 동안 다른 활동을 여는 법을 안다. 하지만 내가하고 싶은 것은 매 초마다 계산되므로 사용자에게 표시 할 수 있습니다. 어떻게해야합니까? 내 활동에는 카운트 다운을 보여주고 싶은 텍스트 뷰가 있습니다.카운트 다운이 끝났을 때 카운트 다운을 표시하고 다른 활동으로 변경하십시오.

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

나는 모든 것을 시험해 보았다. 그러나 1 초가 카운트 다운에 남겨지면 활동을 종료하는 데 더 많은 시간이 걸립니다. 1 초 더 더하는 것 같습니다. 같은 문제가 있습니까? – EM10

1

당신은 CountDownAnimation class을 사용할 수 있습니다. 카운트 다운이 표시 될 TextView 만 전달하면 CountDownListener으로 설정하면됩니다. 그런 다음 onCountDownEnd을 구현하여 활동을 변경하십시오.

나는 CountDownTimer보다 훨씬 정확한 Handler을 사용합니다. CountDownAnimation을 구현할 때, 나는 그 클래스들에 대해 시간 테스트를했다.

관련 문제