Android 如何使用随机时间更改背景?
我是新的堆栈溢出,我想学习回答这个问题,请不要给我负面的声誉 如何在Android Studio上随时间和每次随机更改背景色?我用的是科特林语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)
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我理解代码。这非常有用,非常感谢:)对不起,我不想使用复选框,我想随机更改背景颜色。