Android多个Button颜色变化

时间:2016-06-08 20:42:18

标签: android

所以,我有这个问题,我正在尝试让Button改变它的颜色,以及当我点击它时它所附着的其他按钮的颜色,它需要保持这样,直到一些再次点击它,或者直到点击一个按下它的按钮。图片使人们更容易理解。 UI

所以,例如。当您单击数字6时,数字2,6,7,5,10需要将其颜色更改为红色,并且当您再次单击它时,他们需要将其颜色更改为绿色。   所以,我这样做了:

 Button[] btns = new Button[16]; //colocando 16 botões nele

    btns[0] = (Button) findViewById(R.id.button1);
    btns[1] = (Button) findViewById(R.id.button2);
    btns[2] = (Button) findViewById(R.id.button3);
    btns[3] = (Button) findViewById(R.id.button4);

    btns[4] = (Button) findViewById(R.id.button5);
    btns[5] = (Button) findViewById(R.id.button6);
    btns[6] = (Button) findViewById(R.id.button7);
    btns[7] = (Button) findViewById(R.id.button8);

    btns[8] = (Button) findViewById(R.id.button9);
    btns[9] = (Button) findViewById(R.id.button10);
    btns[10] = (Button) findViewById(R.id.button11);
    btns[11] = (Button) findViewById(R.id.button12);

    btns[12] = (Button) findViewById(R.id.button13);
    btns[13] = (Button) findViewById(R.id.button14);
    btns[14] = (Button) findViewById(R.id.button15);
    btns[15] = (Button) findViewById(R.id.button16);

现在我有点迷失了。我已经在纸上构建了游戏逻辑,问题是,我不知道如何改变多个按钮的颜色。

3 个答案:

答案 0 :(得分:1)

既然你说你已经有了逻辑,我猜你只需要显示如何更改相应按钮的背景颜色。在这种情况下,我有一个方法,它采用一组Button个对象和颜色来设置它们:

private void changeColorOfTheseButtons(Button[] buttons, int color){
  for(int x=0; x < buttons.length; x++){
     //change its color
     buttons[x].setBackgroundColor(color);
   }
}

然后,这就是你用一种颜色调用上面方法的方法(假设你已经有了要改变颜色的按钮列表):

...
changeColorOfTheseButtons(arrayOfButtonsToChange, Color.RED);

使用颜色RED作为上述示例 - 但您可以使用Color.*

中的任何颜色

我希望这会给你一些想法。

答案 1 :(得分:0)

我会使用2D数组而不是1d数组来执行此操作。然后逻辑很简单,只需得到点i周围的按钮,j将是(i-1,j-1),(i-1,j),(i-1,j + 1)等。你应该很容易能够做到这一点并为角落案例(角落/边缘上的按钮)添加适当的逻辑。

答案 2 :(得分:0)

如果我是你,我只是设置逻辑。如果您从0到15开始,那么您的图片将更容易设置此结构。

如果您显示的是4x4网格,那么点击哪一​​个网格将具有:

  • x =点击的按钮数。
  • n1 = x - 4
  • n2 = x + 4
  • n3 = x + 1
  • n4 = x - 1

除非它们不大于0或小于16(0

  • n3%4 == 0
  • n4%4 == 3
  • 3值来自(4 - 1)

此算法可以通过用x值替换4来扩展到任何x x x方格。

如果他们不满足这些要求,如果n3或n4在网格上没有改变的话。

因此有一个函数接受一个表示单击框(x)和btn网格本身的编号的int,然后在单击的按钮上应用此逻辑x,n1,n2,n3和n4。

如果满足上述质量,则再次检查颜色并根据当前颜色将其更改为另一种颜色。