Динамически создаваемые изображения в произвольном порядке начинают устанавливать ширину / высоту равными 0, не знаю, что еще попробовать [Kotlin] - PullRequest
0 голосов
/ 03 мая 2020

Заранее спасибо:)

Контекст

У меня есть игра, работающая со скоростью ~ 120 FPS, и она динамически создает несколько изображений, которые перемещаются по экрану. Эти изображения просматриваются в течение 5 секунд, а затем становятся невидимыми, и код перестает взаимодействовать с этими объектами. Затем создаются новые изображения, чтобы заменить их, которые длятся 5 секунд и так далее. В общей сложности я делаю 4 объекта каждые 5 секунд, которые создают imageView.

Задача

В совершенно случайное время в ходе программы запускаются динамические c изображения. имеют 0 ширину и высоту, поэтому я не вижу их на экране. Я не изменяю, как объект imageview создается вообще, и я не могу найти никакой связи с тем, когда это начинает происходить. Иногда это занимает 2 секунды, иногда 2 минуты. Также другие imageViews, которые не создаются динамически, полностью в порядке. Все imageViews находятся в одном и том же макете ограничений.

Что я уже пробовал

Я точно знаю, что видимость изображения является ВИДИМОЙ, и он расположен в точке х и у на экране. Я также проверил, что альфа на 1F, что проблема не в самом изображении, добавив цвет фона, и я проверил, что imageView это перед всеми другими видами. Я также попытался очистить проект в обоих направлениях. Я также пытался использовать requestLayout () и invalidate () на изображениях. Это также не позволяет мне изменять ширину и высоту, когда она исчезает / становится равной 0. Например, в приведенном ниже коде она печатает 0.

body.layoutParams.width = 20
body.layoutParams.height = 20
println(body.width)
//prints out 0

Это то, как я изначально настраивал imageView динамически. Что работает, пока не работает

body.layoutParams = LinearLayout.LayoutParams(size, size)
body.setImageResource(R.drawable.enemy_two)
body.x = ran.nextInt(screenWidth).toFloat()
body.y = ran.nextInt(screenHeight).toFloat()

main.runOnUiThread {
            layout.addView(body)
            body.visibility = View.VISIBLE}

Пожалуйста, дайте мне знать, если у вас есть идея, потому что я даже не знаю, что попробовать. Это для моего первого приложения, поэтому я могу упустить что-то глупое. Спасибо, ребята

1 Ответ

0 голосов
/ 03 мая 2020

После изменения свойств LayoutParams попробуйте снова установить их в целевом представлении. В противном случае изменения не будут применены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...