#kotlin
#kotlin
Вопрос:
Я хочу переключать положения кнопок, когда мы нажимаем кнопку переключения. Кнопки перемещаются случайным образом. Я много пробовал, но безуспешно. Так что, если кто-нибудь знает, как, но случайным образом
val btnOne = findViewById<View>(R.id.buttonOne) as Button
val btnTwo = findViewById<View>(R.id.buttonTwo) as Button
val posOneX = btnOne.x
val posOneY = btnOne.y
val posTwoX = btnTwo.x
val posTwoY = btnTwo.y
btnOne.x = posTwoX
btnOne.y = posTwoY
btnTwo.x = posOneX
btnTwo.y = posOneY
Комментарии:
1. Что вы подразумеваете под случайным образом? Если есть два элемента, и вы точно переключаете их, это определяющее поведение без случайности. В любом случае, вам придется работать с ViewGroup (группами), которые содержат представления, чтобы иметь возможность работать с их позициями относительно друг друга.
2. Вы могли бы использовать
Random.nextBoolean()
в качествеif
условия, чтобы решить, делать ли обмен вообще, если это то, что вы имеете в виду
Ответ №1:
Да, я нашел решение
b4.setOnClickListener {
var arswap = arrayListOf<Button>(b1, b2, b3);
var randomPos: Int = 0;
fun swap(b1: Button, b2: Button) {
var tempPosition = Point(b1.x.toInt(), b1.y.toInt())
b1.x = b2.x;
b1.y = b2.y;
b2.x = tempPosition.x.toFloat();
b2.y = tempPosition.y.toFloat();
}
var totalItems: Int = 3; // total number of items
for (i in 0..totalItems/3 ) {
randomPos = ((Math.random() * arswap.size).toInt());
var randomItem = ((Math.random() * ((totalItems / 2) - 1)) ((totalItems / 2) 1));
swap(arswap[randomPos], arswap[randomItem.toInt()])
}
}