【问题标题】:Android: Change Button Colors in a PatternAndroid:更改图案中的按钮颜色
【发布时间】:2012-05-31 02:48:27
【问题描述】:

我正在尝试为 Android 实现类似 Simon Says 之类的东西。这是我的代码:

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 个按钮颜色应该改变。我现在的代码将同时点亮两者。 如何使它首先闪烁一种按钮颜色,完成它,然后闪烁第二种按钮颜色? 我已经尝试了一百万种不同的东西,这仍然是我得到的最接近的。

【问题讨论】:

    标签: android button time colors delay


    【解决方案1】:

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

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

    因为它在处理程序中,所以它不会影响 for 循环的运行时间,这意味着所有迭代都直接依次传递,这导致每个可运行对象“几乎”同时执行。

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

    【讨论】:

    • 这有效,除非图案重复一种颜色。例如,如果它应该闪烁绿色两次,它只会闪烁一次。对此有什么想法吗?谢谢!
    • 嗯,这可能是因为它“闪烁”了1000ms,然后等待“0ms”并直接再次闪烁1000ms。将延迟设置为 1100 或 1200 或减少“闪烁时间”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多