Использование Random() для setX() и setY() Некоторые устройства заставляют вид исчезать
Не уверен, что это был ответ. Я сделал определенный поиск так сложно, как мог, потому что я чувствую, что кто-то еще имел бы эту проблему. В основном я использую random вместе с setX и setY, чтобы случайным образом перемещать представление по клику. Это прекрасно работает на моем устройстве, и я выпустил приложение. Хотя мой брат использует другое устройство и сказал, что, как только он нажимает кнопку, вид исчезает с экрана.
Я думаю, очевидно, что setX и setY просто убрали его с экрана. Кто-нибудь знает, как заставить представление двигаться только в пределах родительского макета? Я также должен держать свой текущий случайный метод в такте, поскольку он является неотъемлемой частью игры.
Вот мой код для движения кнопки:
Random r = new Random();
int buttonHeight;
int buttonWidth;
buttonHeight = btnCount.getHeight();
buttonWidth = btnCount.getWidth();
int xLeft = r.nextInt(480 - buttonHeight);
int yUp = r.nextInt(800 - buttonHeight);
int xRight = r.nextInt(480 + buttonHeight);
int yDown = r.nextInt(800 + buttonHeight);
btnCount.setX(xLeft);
btnCount.setX(xRight);
btnCount.setX(yUp);
btnCount.setX(xDown);
Есть идеи?
Обратная совместимость
Я вижу много вопросов по этому вопросу, но если вы хотите помочь в этом вопросе 2 на 1, есть идеи, как сделать тот же метод выше для pre-API 11? Если это не круто, я могу просто посмотреть другие вопросы и методы после того, как это будет исправлено.
Спасибо!
1 ответ
Я обнаружил, что нахождение ширины и высоты на текущем макете, независимо от устройства, а затем деление этих значений на 3, затем взятие значения, деленного на 3, и создание переменной int, которая затем используется вместе с buttonHeight и buttonWidth, прекрасно работает на все устройства, чтобы держать кнопку в пределах экрана. Я понимаю, что это, вероятно, не идеальное решение, но оно быстрое. Я все еще открыт для других предложений.
Спасибо!
Сохраните где-нибудь высоту и ширину основного устройства и выполняйте простые математические операции, такие как:
maindeviceHeight - randomscaleheight
newDeviceHeight - ?
Вы должны сделать то же самое для ширины.