Как я могу изменить фон со случайным временем? - PullRequest
1 голос
/ 05 февраля 2020

Я новичок в переполнении стека и хочу узнать, как ответить на этот вопрос, пожалуйста, не создавайте мне негативную репутацию.

Как изменить цвет фона в случайное время и каждый раз в Android Studio? Я использую Kotlin язык.

var counter:Int =0

        if (Random.nextBoolean())
            background.setBackgroundColor(Color.GREEN)
        else
            background.setBackgroundColor(Color.RED)

        btn_touch.setOnClickListener {

            counter += 1
            textCounter.text = counter.toString()

Ответы [ 3 ]

1 голос
/ 05 февраля 2020

Попробуйте следующий фрагмент кода

val maxDelay = 10000L
val handler = Handler()
var isRed = true;
val updateRunnable = object : Runnable {
    override fun run() {
        background.setBackgroundColor(if(isRed) Color.RED else Color.GREEN)
        isRed = !isRed
        handler.postDelayed(this, Random.nextLong(maxDelay))
    }
}
handler.post(updateRunnable)

Установите значение maxDelay так, как вам нужно, и не забудьте вызвать handler.removeCallbacks(updateRunnable), когда оно вам больше не нужно.

1 голос
/ 05 февраля 2020

Веселый ответ сопрограмм:

    var loop = true
    GlobalScope.launch(Dispatchers.IO) {
        while(loop) {
            delay(TimeUnit.SECONDS.toMillis(Random.nextLong(5)))
            withContext(Dispatchers.Main) {
                when (Random.nextBoolean()) {
                    true -> background.setBackgroundColor(Color.GREEN)
                    false -> background.setBackgroundColor(Color.RED)
                }
            }
        }
    }

Это изменит цвет случайным образом между двумя цветами со случайным интервалом в 1-5 секунд.

Вам нужна зависимость в вашем build.gradle:

dependencies {
         implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3"
         implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'   
    }

Управляйте значением l oop, чтобы запускать и останавливать рандомизацию. (возможно, в onResume & onPause.

Вы можете выбрать случайные цвета, также используя:

 background.setBackgroundColor(Random.nextInt(255))
0 голосов
/ 05 февраля 2020

вы можете добавить CheckBox, если отмечено, добавить зеленый фон, если не добавить красный

btn_touch.setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener
        { compoundButton, ischecked ->
            if (ischecked) {
            background.setBackgroundColor(Color.GREEN)
            } else{
            background.setBackgroundColor(Color.RED)

              }
        })

, но если вы хотите добавить случайное нажатие, каждое нажатие дает вам другой цвет, вы можете следовать этому вопросу. Android: Установить случайный цвет фона при создании

Надеюсь, это поможет вам.

...