Android:更改模式中的按钮颜色

时间:2012-05-31 02:48:27

标签: android button time colors delay

我正在尝试实现像Simon Says for Android这样的东西。这是我的代码:

for(int i = 1; i <= sequence.size(); i++){
handler.postDelayed(new Runnable(){
                    public void run(){
                        if (sequence.peek() == 1){
                            green.setPressed(true);
                            handler.postDelayed(new Runnable(){
                                public void run(){
                                    green.setPressed(false);                
                                    }
                            }, 1000);
                        }
                        else if (sequence.peek() == 2){
                            red.setPressed(true);
                            handler.postDelayed(new Runnable(){
                                public void run(){
                                    red.setPressed(false);               
                                    }
                            }, 1000);
                        }
                        else if (sequence.peek() == 3){
                            yellow.setPressed(true);
                            handler.postDelayed(new Runnable(){
                                public void run(){
                                    yellow.setPressed(false);               
                                    }
                            }, 1000);
                        }
                        else if (sequence.peek() == 3){
                            blue.setPressed(true);
                            handler.postDelayed(new Runnable(){
                                public void run(){
                                    blue.setPressed(false);             
                                    }
                            }, 1000);
                        }
                        int myNum = sequence.peek();
                        sequence.poll();
                        sequence.add(myNum);
                    }
                }, 1000);
            }
}

基本上,我有一个队列(序列),它保持模式闪烁按钮颜色。 (setPressed(true)是与setPressed(false)不同的颜色) 第一次调用它时,只有一个按钮需要更改颜色才能正常工作。第二次调用它时,2个按钮颜色应该改变。我的代码现在将同时点亮。 如何制作它以使它首先闪烁一个按钮颜色,完成它,然后闪烁第二个按钮颜色? 我已经尝试了一百万种不同的东西,这仍然是我得到的最接近的东西。

1 个答案:

答案 0 :(得分:0)

我的猜测是,在没有测试任何代码的情况下,这是因为你的for循环。基本上,它遍历所有序列,并将runnable发布到处理程序,延迟为1000毫秒。

这意味着: i为0:sequence1以1000毫秒开始; i为1:sequence1也以1000毫秒开始; 我是2 ....

因为它在一个处理程序中,它不会影响for循环的运行时,这意味着所有迭代都会直接在彼此之后传递,这导致每个runnable都在“几乎”同时执行。

尝试将延迟设置为(i + 1)* 1000,这样当“时间”为“时间”时,每个“按钮”都会被激活(一秒钟)。