Android倒数计时器是当前日期和下一个活动?

时间:2019-07-12 21:45:02

标签: android android-intent countdown countdowntimer

我有一个具有2个活动的应用程序,因此我想在计时器结束时设置计时器,使其不再活动。我尝试了5秒钟,它开始工作了。但是,当我尝试以天,小时,秒为单位计时时却遇到了一些问题,但我做不到。 假设我将此时间设置为20.10.2019,10:00 AM,当此设置时间结束时,它将进入下一个活动。

如何执行此操作?有什么代码,资源或项目可以让我学到这东西吗?

2 个答案:

答案 0 :(得分:1)

更新,我试过了,而且有效。

public class timer extends AppCompatActivity {
    /*Views declaration*/
    private TextView months_left,weeks_left,daysLeft,hrsLeft,minLeft,secLeft,endDate;
    /*Handler Declaration*/
    private Handler handler;
    /*set End Time for timer */
    private String endDateTime="2019-07-13 06:22:30";

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



        initView();

    }
    private void initView() {
        months_left = findViewById(R.id.txtViewDays);
        weeks_left = findViewById(R.id.txtViewHours);
        daysLeft = findViewById(R.id.txtViewMinutes);
        hrsLeft = findViewById(R.id.txtViewSecond);
        minLeft = findViewById(R.id.misleft);
        secLeft = findViewById(R.id.seclft);
        endDate = findViewById(R.id.enddate);
        endDate.setText(endDateTime);
        /*invoke countDownStart() method for start count down*/
        countDownStart();
    }

    private void countDownStart() {

        handler = new Handler();
        Runnable runnable = new Runnable() {
            @SuppressLint("SetTextI18n")
            @Override
            public void run() {
                handler.postDelayed(this, 1000);
                try {
                    @SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                    // Please set date in  YYYY-MM-DD hh:mm:ss format
                    /*parse endDateTime in future date*/
                    Date futureDate = dateFormat.parse(endDateTime);
                    Date currentDate = new Date();
                    /*if current date is not comes after future date*/
                    if (!currentDate.after(futureDate)) {
                        long diff = futureDate.getTime()
                                - currentDate.getTime();

                        long days = diff / (24 * 60 * 60 * 1000);
                        diff -= days *(24  *60 * 60  *1000);
                        long hours = diff / (60 * 60*  1000);
                        diff -= hours * (60*  60 * 1000);
                        long minutes = diff / (60 * 1000);
                        diff -= minutes * (60  *1000);
                        long seconds = diff / 1000;
                        @SuppressLint("DefaultLocale") String dayLeft = "" + String.format("%02d", days);
                        @SuppressLint("DefaultLocale") String hrLeft = "" + String.format("%02d", hours);
                        @SuppressLint("DefaultLocale") String minsLeft = "" + String.format("%02d", minutes);
                        @SuppressLint("DefaultLocale") String secondLeft = "" + String.format("%02d", seconds);
                        daysLeft.setText(dayLeft + "D: ");
                        hrsLeft.setText(hrLeft + "H: ");
                        minLeft.setText(minsLeft + "M: ");
                        secLeft.setText(secondLeft + "S");
                        if (days <= 0) {
                            if (hours <= 0) {
                                if (minutes <= 0) {
                                    if (seconds <= 0) {
                                        // put your intent here
                                        myActivity();
                                    }
                                }
                            }
                        }

                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
        handler.postDelayed(runnable, 1000);
    }

    private void myActivity() {
        Intent myActivity= new Intent(timer.this, New.class);
        startActivity(myActivity);
    }
}

答案 1 :(得分:0)

一段时间后,您可以使用Handler来开始下一个活动

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                final Intent intent = new Intent(FirstActivity.this, SecondActivity.class);                
                startActivity(intent);
            }
        },3000);

这将在3000毫秒或3秒后开始第二个活动

相关问题