倒计时计时器到具体日期

本文关键字:日期 计时器 倒计时 | 更新日期: 2023-09-27 18:19:10

我正在尝试制作一个倒计时计时器,显示天数,小时,分钟和秒剩余到特定日期的总数。

这是我到目前为止创建的。

protected override void OnCreate (Bundle bundle)
{
  base.OnCreate (bundle);

  SetContentView (Resource.Layout.Main);
  txtDays = FindViewById<TextView> (Resource.Id.txtDays);
  txtHours = FindViewById<TextView> (Resource.Id.txtHours);
  txtMins = FindViewById<TextView> (Resource.Id.txtMins);
  txtSec = FindViewById<TextView> (Resource.Id.txtSec);
  DateTime enteredDate = new DateTime(2013, 7, 25, 12 ,30 ,00);
  DateTime todaysDateTime = DateTime.Now;
  DateTime formattedDate = todaysDateTime.AddHours (2);
  TimeSpan span = enteredDate.Subtract(formattedDate);
  double totalDays = span.TotalDays;
  double totalHours = span.TotalHours;
  double totalMins = span.TotalMinutes;
  double totalSec = span.TotalSeconds;
  new Thread(new ThreadStart(() =>
                             {
    RunOnUiThread(() =>
                  {
      Console.WriteLine ("Days: " + String.Format("{0:0}", Math.Truncate(totalDays)));
      Console.WriteLine ("Hours: " + String.Format("{0:0}", Math.Truncate(totalHours)));
      Console.WriteLine ("Minutes: " + String.Format("{0:0}", Math.Truncate(totalMins)));
      Console.WriteLine ("Seconds: " + String.Format("{0:0}", Math.Truncate(totalSec)));
      txtDays.Text = String.Format ("{0:0}", Math.Truncate (totalDays));
      txtHours.Text = String.Format ("{0:0}", Math.Truncate (totalHours));
      txtMins.Text = String.Format ("{0:0}", Math.Truncate (totalMins));
      txtSec.Text = String.Format ("{0:0}", Math.Truncate (totalSec));
  });
  })).Start();  
}

如何更新TextViews每秒钟自动与Android c# ?

编辑2:

我已经使用定时器,它与控制台计数。WriteLine,但TextViews显示什么,他们不更新…有人知道如何每秒更新textview吗?

timer = 0;
      new Thread(new ThreadStart(() =>
                                 {
      Thread.Sleep (1000);
        RunOnUiThread(() =>
                      {
      tmr.Elapsed += new System.Timers.ElapsedEventHandler(tmr_Elapsed);
      tmr.Start();
      while (timer < totalSec) ;
      tmr.Stop();
        });
      })).Start(); 
void tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
      txtDays = FindViewById<TextView> (Resource.Id.txtDays);
      txtHours = FindViewById<TextView> (Resource.Id.txtHours);
      txtMins = FindViewById<TextView> (Resource.Id.txtMins);
      txtSec = FindViewById<TextView> (Resource.Id.txtSec);
      DateTime enteredDate = new DateTime(2013, 7, 25, 12 ,30 ,00);
      DateTime todaysDateTime = DateTime.Now;
      DateTime formattedDate = todaysDateTime.AddHours (2);
      TimeSpan span = enteredDate.Subtract(formattedDate);
      totalDays = span.TotalDays;
      totalHours = span.TotalHours;
      totalMins = span.TotalMinutes;
      totalSec = span.TotalSeconds;
      Console.WriteLine ("Days: " + String.Format("{0:0}", Math.Truncate(totalDays)));
      Console.WriteLine ("Hours: " + String.Format("{0:0}", Math.Truncate(totalHours)));
      Console.WriteLine ("Minutes: " + String.Format("{0:0}", Math.Truncate(totalMins)));
      Console.WriteLine ("Seconds: " + String.Format("{0:0}", Math.Truncate(totalSec)));
      txtDays.Text = String.Format ("{0:0}", Math.Truncate (totalDays));
      txtHours.Text = String.Format ("{0:0}", Math.Truncate (totalHours));
      txtMins.Text = String.Format ("{0:0}", Math.Truncate (totalMins));
      txtSec.Text = String.Format ("{0:0}", Math.Truncate (totalSec));
    }

倒计时计时器到具体日期

在c#中使用Timer类并将其设置为1秒

问题解决,在tmr_Elapsed中添加RunOnUiThread

void tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  RunOnUiThread(() =>
                {
  txtDays = FindViewById<TextView> (Resource.Id.txtDays);
  txtHours = FindViewById<TextView> (Resource.Id.txtHours);
  txtMins = FindViewById<TextView> (Resource.Id.txtMins);
  txtSec = FindViewById<TextView> (Resource.Id.txtSec);
  DateTime enteredDate = new DateTime(2013, 7, 25, 12 ,30 ,00);
  DateTime todaysDateTime = DateTime.Now;
  DateTime formattedDate = todaysDateTime.AddHours (2);
  TimeSpan span = enteredDate.Subtract(formattedDate);
  totalDays = span.TotalDays;
  totalHours = span.TotalHours;
  totalMins = span.TotalMinutes;
  totalSec = span.TotalSeconds;
  Console.WriteLine ("Days: " + String.Format("{0:0}", Math.Truncate(totalDays)));
  Console.WriteLine ("Hours: " + String.Format("{0:0}", Math.Truncate(totalHours)));
  Console.WriteLine ("Minutes: " + String.Format("{0:0}", Math.Truncate(totalMins)));
  Console.WriteLine ("Seconds: " + String.Format("{0:0}", Math.Truncate(totalSec)));

  txtHours.Text = String.Format ("{0:0}", Math.Truncate (totalHours));
  txtHours.Text = String.Format ("{0:0}", Math.Truncate (totalHours));
  txtMins.Text = String.Format ("{0:0}", Math.Truncate (totalMins));
  txtSec.Text = String.Format ("{0:0}", Math.Truncate (totalSec));
  });
}