Java 连续倒计时循环
我正在做一个圣诞节倒计时应用程序,我有应用程序工作的基础。它倒计时到代码中指定的日期。我想做的是,每当计时器完成时,我想将日期设置为下一年,然后再次开始计时,而用户无需做任何事情 我尝试了一些方法,比如循环和添加Java 连续倒计时循环,java,android,countdowntimer,Java,Android,Countdowntimer,我正在做一个圣诞节倒计时应用程序,我有应用程序工作的基础。它倒计时到代码中指定的日期。我想做的是,每当计时器完成时,我想将日期设置为下一年,然后再次开始计时,而用户无需做任何事情 我尝试了一些方法,比如循环和添加cdt.start(),但两者似乎都不起作用 如果有人能为我指引正确的方向,我将不胜感激 谢谢 MainActivity.java import android.app.PendingIntent; import android.content.Intent; import androi
cdt.start()在onFinish()
方法中使用code>,但两者似乎都不起作用
如果有人能为我指引正确的方向,我将不胜感激
谢谢
MainActivity.java
import android.app.PendingIntent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
import java.util.Calendar;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.parse.Parse;
import com.parse.ParseInstallation;
public class MainActivity extends AppCompatActivity {
private PendingIntent pendingIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Creating the TextView for the countdown
final TextView tv_countdown = (TextView) findViewById(R.id.countdown_text_view);
//Set the Calendar Date and Time
Calendar start_calendar = Calendar.getInstance();
final Calendar end_calendar = Calendar.getInstance();
end_calendar.set(2016, 11, 25, 24, 0, 0);// 10 = November, month start at 0 = January
long start_millis = start_calendar.getTimeInMillis(); //get the start time in milliseconds
long end_millis = end_calendar.getTimeInMillis(); //get the end time in milliseconds
long total_millis = (end_millis - start_millis); //total time in milliseconds
//Convert the time from milliseconds to the correct time specified
//1000 = 1 second interval
CountDownTimer cdt = new CountDownTimer(total_millis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
millisUntilFinished -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
millisUntilFinished -= TimeUnit.HOURS.toMillis(hours);
long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
//Set the TextVew output
tv_countdown.setText(days + " Days" + "\n" + hours + " Hours" + "\n" + minutes + " Minutes" + "\n" + seconds + " Seconds"); //You can compute the millisUntilFinished on hours/minutes/seconds
}
@Override
public void onFinish() {
end_calendar.set(2017, 11, 25, 24, 0, 0);
}
};
cdt.start();
只是一个如何做的想法。创建当前年份的结束日期,如果该日期已经过去,则为下一年创建该日期
Calendar start_calendar = Calendar.getInstance();
final Calendar end_calendar = Calendar.getInstance();
int year = start_calendar.get(YEAR);
end_calendar.set(year, 11, 25, 24, 0, 0);
long start_millis = start_calendar.getTimeInMillis();
long end_millis = end_calendar.getTimeInMillis();
long total_millis = (end_millis - start_millis);
if (total_millis < 0) {
end_calendar.set(year + 1, 11, 25, 24, 0, 0);
end_millis = end_calendar.getTimeInMillis();
total_millis = (end_millis - start_millis);
}
Calendar start\u Calendar=Calendar.getInstance();
final Calendar end_Calendar=Calendar.getInstance();
int year=开始日历。获取(年);
结束日历集(年份,11,25,24,0,0);
long start_millis=start_calendar.getTimeInMillis();
long end_millis=end_calendar.getTimeInMillis();
长的总长度=(结束-开始);
如果(总_毫秒<0){
结束日历集(年份+1,11,25,24,0,0);
end_millis=end_calendar.getTimeInMillis();
总量=(结束-开始);
}
你知道你不应该发布你的解析密钥吗?谢谢你提醒我@tynn!!它还没有真正消失。这里的一切都被修改了。您可能需要创建一个新密钥。这是一个好主意,但是当倒计时结束时,它不会以新日期开始。请在onFinish()
中执行完全相同的操作。另外,使用更多的方法,而不是在onCreate()
中执行所有操作。