簡體   English   中英

Android Studio延遲FOR循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM