如何移动按钮和更改按钮图像
我会Button
在每个GridView
位置上放一个单曲。然后,我会使用button.setBackground()
andbutton.setVisibility()
来显示和隐藏带有各种图像的按钮。这样,按钮看起来会移动,但实际上您只是在显示不同的按钮。
我推荐这样做,因为更改按钮的可见性和图像属性比实际移动按钮更容易,尽管这两种方法都是可能的。
您将维护一个图像[n] 的一维数组和一个按钮[6,6] 的二维数组。
例如,假设您要将图像 [5] 从网格位置 (1,2) 移动到位置 (3,4):
// Hide the button at (1,2);
button[1,2].setVisibility(Button.INVISIBLE);
// Display the button at (3,4) with image #5.
button[3,4].setBackground(image[5]);
button[3,4].setVisibility(Button.VISIBLE);
此外,如果您的按钮图像存储在您的资源中,您可以有效地使用button.setBackgroundResource(R.drawable.image-5-id);
上面的说明讨论了如何移动 Button,但现在如何触发一个 Button 被移动,然后触发 Button 移动到的位置。
为此,您必须定义两种状态,例如:
private final static int STATE_PICK_BUTTON = 0;
private final static int STATE_PICK_LOCATION = 1;
private int state;
初始化state = STATE_PICK_BUTTON;
- 当系统处于第一种状态
STATE_PICK_BUTTON
时,您的函数中标识的所有按钮按下都会onClick()
记住要从中移动的网格位置,并且在某些情况下会将系统转换到第二种状态STATE_PICK_LOCATION
:
- 当系统处于第二状态
STATE_PICK_LOCATION
时,所有的按钮按下实际上将按钮从记忆的网格位置移动到该按钮按下的网格位置。
- 当然,您必须进行各种错误检查,以确保在触发状态转换之前允许您移动按钮。
最后,上述建议可能行不通,因为可能无法单击不可见的按钮。如果是这种情况,不要更改空网格位置中按钮的可见性,而是保留所有按钮Button.VISIBLE
并为代表空网格空间的按钮使用完全透明的按钮图像。