更改相邻ImageButtons(Android)中的图像

时间:2016-11-01 20:34:03

标签: java android imagebutton

所以我试图为Android制作一款小游戏。关于打开和关闭灯的问题。我有25个ImageButtons,当我按下一个时,我需要相邻的(向上,向左,向下,向右)也要改变。 问题是,我无法找到获取/识别此按钮的方法。 我尝试使用" view.getX()"和" view.getY()"但是不知道如何以正确的方式实施它们(如果有的话)。 这是我用来更改ONE按钮的代码:

    public void change(View view)
{
    String state = view.getTag().toString();
    if (state.equals("on"))
    {
        view.setBackgroundDrawable(getResources().getDrawable(R.drawable.lightOff));
        view.setTag("off");
        lightsOn -= 1;
        txtNumLights.setText(String.valueOf(lightsOn));
    }
    if (state.equals("off")) {
        view.setBackgroundDrawable(getResources().getDrawable(R.drawable.lightOn));
        view.setTag("on");
        lightsOn += 1;
        txtNumLights.setText(String.valueOf(lightsOn));
    }
}

我使用标签知道它是否为On或Off,并设置一个带有ON灯数的txtView。 但是,到目前为止,我如何获得与此相邻的那些? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您必须将按钮存储在二维数组上。

当您单击一个按钮时,您可以在感兴趣的按钮上设置标记和背景。

伪代码:

If (button_matrix[row][column] is clicked) then
    Set_tag_background (button_matrix[row-1][column])
    Set_tag_background (button_matrix[row+1][column])
    Set_tag_background (button_matrix[row][column-1])
    Set_tag_background (button_matrix[row][column+1])
    Set_tag_background (button_matrix[row][column])
    ...

关于实现,你应该注意不要生成ArrayOutOfBoundsException ...