有没有办法以编程方式调用按钮按动画而不调用方法?

时间:2015-06-05 07:44:32

标签: java android

更新:我刚刚在上面添加了第二组按钮,没有任何方法,所以这两个按钮不会干扰。

要明确的是,以下是针对simon所说的类型游戏,其中计算机播放按钮模式,用户必须按正确的顺序点击它们。

我正在以编程方式调用一系列按钮作为演示给用户,他们希望按下那些按钮。但是当按下演示按钮时,他们的方法被调用,这会给用户带来麻烦。

如何只调用按钮动画,以便仍然显示演示但是没有调用onClick方法?

以下是一些相关代码:

public void clickBut(View view, int[] list, int level) {

    Button redBut = (Button)findViewById(R.id.redBut);
    Button blueBut = (Button)findViewById(R.id.blueBut);
    Button greenBut = (Button)findViewById(R.id.greenBut);
    Button yellowBut = (Button)findViewById(R.id.yellowBut);

    for (int i = 0; i < level; i++) {
        if (list[i] == 0) {
            redBut.setPressed(false);
            redBut.performClick();
            redBut.setPressed(true);
            redBut.invalidate();
            redBut.setPressed(false);
            redBut.invalidate();
        }
        else if (list[i] == 1) {
            redBut.setPressed(false);

            blueBut.callOnClick();
            blueBut.setPressed(true);
            blueBut.invalidate();
            blueBut.setPressed(false);
            blueBut.invalidate();
        }
        else if (list[i] == 2) {
            redBut.setPressed(false);

            greenBut.callOnClick();
            greenBut.setPressed(true);
            greenBut.invalidate();
            greenBut.setPressed(false);
            greenBut.invalidate();
        }
        else if (list[i] == 3) {
            redBut.setPressed(false);

            yellowBut.callOnClick();
            yellowBut.setPressed(true);
            yellowBut.invalidate();
            yellowBut.setPressed(false);
            yellowBut.invalidate();
        }

    }
}

请原谅我,如果setPressed(布尔)行是多余的或不稳定的我尝试不同的组合。

我需要播放并点击正确的按钮而不激活方法,然后将其打开给用户,这样他/她就可以点击按钮并调用相应的方法。

让我知道是否有更多的代码会有所帮助。

2 个答案:

答案 0 :(得分:0)

替换 -

        redBut.setPressed(false);
        redBut.performClick();
        redBut.setPressed(true);
        redBut.invalidate();
        redBut.setPressed(false);
        redBut.invalidate();

逐      下面的代码显示按钮单击1秒钟: -

            button.performClick();
            button.setPressed(true);  
            runnable = new Runnable() {
                @Override
                public void run() {
                    //called after 1000 millisecond/ 1 second
                    button.setPressed(false);  
                }
            };
            handler.postDelayed(runnable, 1000);

如果要显示所选按钮,请使用 -

            button.setPressed(true);  

答案 1 :(得分:0)

以下应该做的伎俩

mButton.setOnClickListener(null);