说我有4个按钮。我希望按钮2总是随机换出另一个按钮。 因此,当用户点击按钮2时,它应该与另一个按钮交换(随机)。
现在,button 2
位于右下角。因此,如果用户再次点击按钮2,则可以选择
与其他三个按钮交换。
我已经尝试过制作四个值的数组:
top_right, top_left, bottom_right, bottom_left
并将它们放入自己的布局中,随机选择的按钮与另一个按钮交换。但是,这对我来说效率不高。
如果你引导我解决这个问题,我将非常感激!
谢谢,
Ruchir
答案 0 :(得分:0)
首先设置按钮的标记及其编号
Button[] buttons = {btn1, btn2, btn3, btn4};
并将它们放在一个数组中:
View.OnClickListener btnListener = View.OnClickListener() {
public void onClick(View v) {
swap((int) v.getTag());
}
};
然后为所有按钮定义clickListener
btn1.setOnClickListener(btnListener);
btn2.setOnClickListener(btnListener);
btn3.setOnClickListener(btnListener);
btn4.setOnClickListener(btnListener);
然后将其分配给按钮:
void swap(int butNum){
Random ran = new Random();
int randomNum = ran.nextInt(buttons.length - 1) + 1;
if(randomNum == butNum) randomNum += 1;
if(randomNum > buttons.length) randomNum = 1;
Button firstBut = getButtonByTagNum(butNum);
Button secondBut = getButtonByTagNum(randomNum);
String s1 = firstBut.getText();
firstBut.setText(secondButton.getText());
secondButton.setText(s1);
firstButton.setTag(randomNumber);
secondButton.setTag(butNum);
}
Button getButtonByTagNum(int tagNum){
for(int i = 0; i < buttons.length; i++){
if( ( (int) buttons[i].getTag()) == tagNum - 1){
return buttons[i];
}
}
}
现在用于交换功能:
row
它可能需要一点点润色和调试。但是你明白了。