2014-09-24 55 views
0

我寫一個小的倒計時程序顯示的消息,我發現的SO鏈接有幫助,我得到的代碼,但我有一個小的查詢如何顯示的消息之一,當倒計時迄今達成我們提及。如何在迄今達成

public class MainActivity extends Activity { 

String time1 = "14-02-2015 12:01:00"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    tv=(TextView)findViewById(R.id.textView1); 
    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      Calendar start = Calendar.getInstance(); 
      String time = "dd-MM-yyyy hh:mm:ss"; 

      String dateStart =(String) DateFormat.format(time, start);       
      String dateStop = time1; 


      SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
      // Custom date format 
      java.util.Date d1=null; 
      java.util.Date d2=null; 
       try { 
        d1 = format.parse(dateStart); 
        d2 = format.parse(dateStop); 
       } catch (java.text.ParseException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 


      long diff = d2.getTime() - d1.getTime(); 

      long diffdays =(diff/ (1000*60*60*24)); 
      long diffHours = ((diff - (1000*60*60*24*diffdays))/(1000*60*60));        
      long diffMinutes = (diff - (1000*60*60*24*diffdays) - (1000*60*60*diffHours))/(1000*60); 
      long diffSeconds =(diff - (1000*60*60*24*diffdays) - (1000*60*60*diffHours) -(1000*60*diffMinutes))/ (1000);     

      String out= 
        "Days: "+diffdays+ 
        " Hours: "+diffHours+ 
        " Minutes: "+diffMinutes+ 
        " seconds: "+diffSeconds; 
      tv.setText(out); 

      handler.postDelayed(this, 1000); 
     } 
    }, 1000); 
    } 
} 

我想顯示消息 「快樂情人節」,在相同的TextView當迄今達成

+0

你不想這樣做。 (你不能這麼做,真的。)用AlarmManager來設置鬧鐘。 – 2014-09-24 11:19:02

回答

0

您在android系統已經進入倒計時:

例子:

CountDownTimer cdt = new CountDownTimer(a.getTime() - b.getTime(), 1000) 
      { 

       public void onTick(long millisUntilFinished) 
       { 
        // TODO Auto-generated method stub 
        long seconds = millisUntilFinished/1000; 
        long minutes = seconds/60; 
        long hours = minutes/60; 
        long days = hours/24; 

        txtDays.setText(days + ""); 
        txtHours.setText(hours % 24 + "h"); 
        txtMinutes.setText(minutes % 60 + "m"); 
        txtSeconds.setText(seconds % 60 + "s"); 
       } 

       public void onFinish() 
       { 
        // TODO Auto-generated method stub 
        txtDateTime.setVisibility(View.VISIBLE); 
        txtDays.setVisibility(View.GONE); 
        txtHours.setVisibility(View.GONE); 
        txtSeconds.setVisibility(View.GONE); 
        txtMinutes.setVisibility(View.GONE); 
        txtDayText.setVisibility(View.GONE); 
       } 
      }.start(); 
1

它不是一個應運行一個倒數計時器在一起的日子

如果是在PA設置rticular日期,你可能需要一些自定義消息對特定日期添加報警事件。 你也需要寫一個廣播接收器來處理報警打開一些活動和處理在那裏。

1

1.Dude你會殺了你的Android設備。請不要長時間運行線程。使用報警管理器和廣播接收器。

  1. 要顯示消息,您需要調用對話框或吐司。但是你不能那麼簡單,因爲你正在使用一個線程。所以你需要調用runOnUiThread,並在其中寫入警告對話框代碼。

==============

runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
      // Your dialog code. 
      } 
     }); 

根據您的應用程序,你應該這樣做。

runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
     // Your dialog code. 
     tv.setText(out); 
     } 
    });