【问题标题】:How to keep changing background color in Kotlin?如何在 Kotlin 中不断改变背景颜色?
【发布时间】:2021-06-27 11:04:37
【问题描述】:

我想让背景像迪斯科屏幕一样变化。 但在这段代码中,只显示了蓝色。我应该修复什么来改变颜色保持不变?

var bgColor = 1
        val bgDrawableIds = intArrayOf(
            R.drawable.purple,
            R.drawable.red,
            R.drawable.blue,
        )
        bgColor++
        disco_display.background = resources.getDrawable(bgDrawableIds[bgColor % bgDrawableIds.size])
    

xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/disco_display"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white" />

</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

  • 添加完整代码..

标签: android kotlin background-color


【解决方案1】:

将其包装在协程中:

lifecycleScope.launch {
    while (true) {
        disco_display.background = resources.getDrawable(bgDrawableIds[++bgColor % bgDrawableIds.size])
        delay(200L)
    }
}

【讨论】:

  • 如何初始化生命周期范围?
  • 你没有。它是您的 Activity 或 Fragment 的预先存在的属性。
  • 但生命周期范围是红色文本。并且错误说未解决的参考:生命周期范围
  • 您是否对 AppCompatActivity 进行了子类化,并且您使用的是 Jetpack 库的 -ktx 版本吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2015-06-16
相关资源
最近更新 更多