Как сохранить изменение цвета фона в Kotlin?

#android #kotlin #background-color

#Android #kotlin #background-color

Вопрос:

Я хочу, чтобы фон менялся, как на экране дискотеки. Но в этом коде отображается только синий цвет. Что я должен исправить, чтобы изменение цвета оставалось измененным?

 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>
 

Комментарии:

1. Добавьте полный код..

Ответ №1:

Оберните это в сопрограмму:

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

Комментарии:

1. Как я могу инициализировать lifecycleScope?

2. Вы этого не делаете. Это уже существующее свойство вашей активности или фрагмента.

3. Но lifecycleScope отображается красным цветом текста. И ошибка указала неразрешенную ссылку: lifecycleScope

4. Были ли у вас подклассы AppCompatActivity и используете ли вы версии -ktx библиотек Jetpack?