Android Studio为FOR循环提供延迟

时间:2016-02-06 01:20:09

标签: java android android-activity android-studio delay

我正在尝试构建一个简单的应用程序,用户需要重新启动计算机按下的按钮。 点击的每个按钮发出声音..所以为了使每个声音,声音正确,我试图在计算机按下的每次点击之间给出一点延迟......

所以我使int []包含计算机点击按钮的方式的顺序(单击按钮1,双击按钮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但似乎它只进入一个案例...而唯一的延迟是当我从GameActivity的FirstActivity

我在UserName的FirstActivity just字段中什么也没有...

好吧,我希望你能帮助我们和语法学家&gt;&lt;

这是延迟..我试图做点什么,但所有这一切都是在我从actity 1转到另一个但在主要内容中没有做任何事情时延迟我几秒钟。

 private void timedelay() {
    try{
        Thread.sleep(2500);
    }
    catch (Exception e){

    }
}

1 个答案:

答案 0 :(得分:1)

对于这种事情你绝对应该使用"""Converts mi to km.""" print("Welcome to the converter!") miorkm = input("Km to mi, or mi to km: ").lower val = input("How many Km or Mi: ") def converter(inpu2): """Converts the value.""" output = 0 if miorkm == "km": output = int(val) * 0.621 else: output = int(val) * 1.609 return output print(converter(miorkm)) 制作一个计时器。在回调方法中,单击按钮。您现在使用的方法可能会阻止主线程。这真的很糟糕。

幸运的是,我已经写过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); 的文字。第四次按下时,计时器停止。

轻松! (如果你有计时器类)