android 循环内的延迟处理程序

Delay handler inside a loop in android

我正在尝试将处理程序插入到循环中,但它只会发生一次。

for(int i = 0;i<4;i++) {
    btn1.setBackgroundColor(Color.RED);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            btn1.setBackgroundColor(Color.GREEN);
        }
    }, 2000);
}

如果您希望按钮在红色和绿色之间切换并延迟 2 秒,您可以尝试这样的操作:

for(int i = 0;i<4;i++) {
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        btn1.setBackgroundColor(Color.RED);
                    }
    }, 2000*2*i);
    new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        btn1.setBackgroundColor(Color.GREEN);
                    }
    }, 2000*(2*i+1));
}

使用时

new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    btn1.setBackgroundColor(Color.GREEN);
                }
            }, 2000)

您将延迟设置为固定值。 要使按钮闪烁,延迟必须是动态的,并且每次循环迭代都会更改。