2014-03-18 35 views
0

我想開發一個像匹配小圖片的遊戲。我的問題是,我想在一段時間後完成遊戲。例如,在第1級,我們有10秒的時間匹配我也想顯示剩餘時間。我會很感激任何幫助。一段時間後完成一項活動

回答

4

既然你也想顯示倒計時,我會推薦一個CountDownTimer。這有方法在每個「tick」上採取行動,這可以是您在構造函數中設置的時間間隔。而且它的方法對UI Thread運行,所以你可以很容易地更新TextView,等...

在它的onFinish()方法,你可以調用finish()Activity或做任何其他適當的行動。

See this answer for an example

編輯與更明顯的例子

在這裏,我具有extends CountDownTimer

@Override 
public void onCreate(Bundle savedInstanceState) { 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.some_xml);  
    // initialize Views, Animation, etc... 

    // Initialize the CountDownClass 
    timer = new MyCountDown(11000, 1000); 
} 

// inner class 
private class MyCountDown extends CountDownTimer 
{ 
    public MyCountDown(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
     frameAnimation.start(); 
     start();    
    } 

    @Override 
    public void onFinish() { 
     secs = 10; 
     // I have an Intent you might not need one 
     startActivity(intent); 
     YourActivity.this.finish(); 
    } 

    @Override 
    public void onTick(long duration) { 
     cd.setText(String.valueOf(secs)); 
     secs = secs - 1;    
    } 
} 
+0

我嘗試過,但我的應用程序給了一個黑色的screen.Should我寫信給我的應用程序的整個代碼就像畫畫,然後單擊事件,但噸onTick()方法等? – user1941070

+0

您仍然將'Views'放在''Activity''中''setContentView(...)'。 'onTick()'是你在哪裏更新你的'TextView'或者其他什麼,如果需要的話。等等,也許我可以在'Activity'裏面張貼一個簡短的例子*。 – codeMagic

+0

@ user1941070我已經更新了一個更詳細的例子。我希望這是有道理的。 – codeMagic

0

@nKn描述它很好的內級。

但是,如果你不想處理Handler。你總是可以通過寫延遲的系統代碼的進展:

Thread.sleep(time_at_mili_seconds); 

你可能需要用try-catch代碼,你可以很容易地通過源 - 添加>的環繞包圍它 - >嘗試&漁獲物。

+1

不在'UI Thread'上,我希望 – codeMagic

+0

不,它只是暫停當前線程。 你可以在這裏找到更多關於它的信息: [link](http://msdn.microsoft.com/en-us/library/d00bd51t%28v=vs.110%29.aspx) – YanivGK

+1

我知道'Thread。睡()'確實。我的意思是你沒有指出它的位置,如果你把它放在'UI Thread'上,那麼它實際上會導致'UI Thread'惹惱。這通常是不好的。 – codeMagic

0

您可以使用HandlerpostDelayed()方法......通過一個Thread和特定的時間,之後將Thread將如下執行...

private Handler mTimerHandler = new Handler(); 

private Runnable mTimerExecutor = new Runnable() { 

    @Override 
    public void run() { 
     //here, write your code 
    } 
}; 

然後調用HandlerpostDelayed()方法後,執行您的指定時間如下...

mTimerHandler.postDelayed(mTimerExecutor, 10000); 
相關問題