#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?