Android 如何使用随机时间更改背景?

Android 如何使用随机时间更改背景?,android,android-studio,android-layout,kotlin,Android,Android Studio,Android Layout,Kotlin,我是新的堆栈溢出,我想学习回答这个问题,请不要给我负面的声誉 如何在Android Studio上随时间和每次随机更改背景色?我用的是科特林语 var counter:Int =0 if (Random.nextBoolean()) background.setBackgroundColor(Color.GREEN) else background.setBackgroundColor(Color.RED)

我是新的堆栈溢出,我想学习回答这个问题,请不要给我负面的声誉

如何在Android Studio上随时间和每次随机更改背景色?我用的是科特林语

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()

选中时可以添加
复选框
,如果不添加红色,则添加绿色背景

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

              }
        })
但是,如果你想随机添加每一个媒体给你不同的颜色,你可以按照这个问题。


我希望它能对您有所帮助。

请尝试以下代码片段

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
值,不要忘记在不再需要时调用
处理程序。removeCallbacks(updateRunnable)

一个有趣的协同程序回答:

    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'   
    }
控制循环值以开始和停止随机化。(可能在
onResume
onPause

您还可以使用以下方法使其选择随机颜色:

 background.setBackgroundColor(Random.nextInt(255))

您希望背景颜色多久更改一次?我只想更改绿色或红色您希望背景何时更改?每秒钟?每次用户访问屏幕时?每次有人单击按钮时?我想更改背景随机时间,例如绿色后5秒,然后可能在红色后1秒。我可以解释一下吗在?我不明白
GlobalScope.launch(Dispatchers.IO)
GlobalScope和Dispatchers是未解析的引用我该怎么办?@life4在导入
Handler()时用您需要添加的kotlin协程依赖项更新了它:-)
method android studio有两个部分,一个是
android.os
,另一个是
java.util.logging
有什么区别我选择android.os我理解代码。这非常有用,非常感谢:)对不起,我不想使用复选框,我想随机更改背景颜色。