如何将日历实现到小部件

时间:2015-09-26 18:47:17

标签: java android calendar widget

所以我有一个显示日历倒计时的应用程序,效果很好。我想添加一个app小部件,我在我的项目中创建了一个NewAppWidget.Java文件,我不知道如何将我的应用程序中的代码实现到小部件的代码中。我希望能够在我的小部件中显示事件发生前剩余的“天数”!希望这是有道理的。

这是我的代码!

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final TextView tv_countdown = (TextView) findViewById(R.id.countdown_text_view);


    Calendar start_calendar = Calendar.getInstance();
    Calendar end_calendar = Calendar.getInstance();
    end_calendar.set(Calendar.YEAR, 2015);
    end_calendar.set(Calendar.MONTH, 10);
    end_calendar.set(Calendar.DATE, 06);
    end_calendar.set(Calendar.HOUR_OF_DAY, 0);
    end_calendar.set(Calendar.MINUTE, 0);
    end_calendar.set(Calendar.SECOND, 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


    //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);

            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() {
            tv_countdown.setText("Finished");

        }
    };
    cdt.start();


}

0 个答案:

没有答案