[英]Android Studio give a FOR loop a delay
我試圖構建一個簡單的應用程序,用戶需要記住計算機按下的按鈕..每個單擊的按鈕都會發出聲音..為了使每種聲音都正確發出聲音,我嘗試在每個按鈕之間稍加延遲單擊計算機按下的...
因此,我進行了int []運算,其中包括計算機單擊按鈕的方式順序(對於1單擊button1,對於2單擊按鈕2 ....),現在我試圖用力按下按鈕,哈哈,所以我做到了:
private void ClickButtons(int[] sequence) {
Button btcomp1 = (Button) findViewById(R.id.btComp1);
Button btcomp2 = (Button) findViewById(R.id.btComp2);
Button btcomp3 = (Button) findViewById(R.id.btComp3);
Button btcomp4 = (Button) findViewById(R.id.btComp4);
TextView check=(TextView)findViewById(R.id.textViewKq);
Handler handler = new Handler();
for (int i = 0; i < sequence.length; i++)
{
switch (sequence[i]) {
case 1:
btcomp1.performClick();
check.setText("4..");
timedelay();
break;
case 2:
btcomp2.performClick();
check.setText("3..");
timedelay();
break;
case 3:
btcomp3.performClick();
check.setText("2..");
timedelay();
break;
case 4:
btcomp4.performClick();
check.setText("1..");
timedelay();
break;
}
}
}
它沒有很好地工作,我什至認為按鈕可能是問題所在,因此我將其設置為更改某些Textview,但似乎它只能輸入一種情況……唯一的延遲是當我從FirstActivity移至游戲活動
我真的在FirstActivity just字段中沒有UserName ...
好吧,我希望你能幫助我和我的語法專家> <
這是延遲..我嘗試做某事,但所有要做的是將我從活動1轉到其他活動延遲幾秒鍾,但主要卻什么也沒做。
private void timedelay() {
try{
Thread.sleep(2500);
}
catch (Exception e){
}
}
對於這種事情,您絕對應該使用android.os.Handler
來創建計時器。 然后在回調方法中,單擊按鈕。 您現在使用的方法可能會阻塞主線程。 這真的很糟糕。
幸運的是,我已經編寫了一個Timer
類來做到這一點! 這是整個班級:
import android.os.Handler;
public class Timer {
private Handler handler;
private boolean paused;
private int interval;
private Runnable task = new Runnable () {
@Override
public void run() {
if (!paused) {
runnable.run ();
Timer.this.handler.postDelayed (this, interval);
}
}
};
private Runnable runnable;
public int getInterval() {
return interval;
}
public void setInterval(int interval) {
this.interval = interval;
}
public void startTimer () {
paused = false;
handler.postDelayed (task, interval);
}
public void stopTimer () {
paused = true;
}
public Timer (Runnable runnable, int interval, boolean started) {
handler = new Handler ();
this.runnable = runnable;
this.interval = interval;
if (started)
startTimer ();
}
}
嘗試了解它。 之后,您可以像下面這樣使用此計時器:
final Timer t = new Timer(new Runnable() {
private int i = 1;
Button btcomp1 = (Button) MainActivity.this.findViewById(R.id.btComp1);
Button btcomp2 = (Button) MainActivity.this.findViewById(R.id.btComp2);
Button btcomp3 = (Button) MainActivity.this.findViewById(R.id.btComp3);
Button btcomp4 = (Button) MainActivity.this.findViewById(R.id.btComp4);
TextView check=(TextView)MainActivity.this.findViewById(R.id.textViewKq);
public void run() {
switch (i) {
case 1:
btcomp1.performClick();
check.setText("4..");
break;
case 2:
btcomp2.performClick();
check.setText("3..");
break;
case 3:
btcomp3.performClick();
check.setText("2..");
break;
case 4:
btcomp4.performClick();
check.setText("1..");
t.stopTimer();
break;
}
}
}, 1000, true);
一旦創建了該計時器,它基本上每秒就會按下一個按鈕。 並設置check
文本。 第四次按下時,計時器停止。
簡單! (如果您有計時器類)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.