Ресурсы Color хранят определения цветов. Они должны храниться в проекте в каталоге res/values и
также, как и ресурсы строк, заключены в тег <resources>
. Так, по умолчанию при создании самого простого проекта в
папку res/values добавляется файл colors.xml:
По умолчанию он имеет следующее определение:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#FF6200EE</color> <color name="purple_700">#FF3700B3</color> <color name="teal_200">#FF03DAC5</color> <color name="teal_700">#FF018786</color> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> </resources>
Цвет определяется с помощью элемента <color>
. Его атрибут name
устанавливает название цвета, которое будет
использоваться в приложении, а шестнадцатеричное число - значение цвета.
Для задания цветовых ресурсов можно использовать следующие форматы:
#RGB (#F00 - 12-битное значение)
#ARGB (#8F00 - 12-битное значение с добавлением альфа-канала)
#RRGGBB (#FF00FF - 24-битное значение)
#AARRGGBB (#80FF00FF - 24-битное значение с добавлением альфа-канала)
Чтобы не трогать и не портить данный файл, определим свой новый файл ресурсов и для этого добавим в папку res/values новый файл ресурсов, который назовем my_colors.xml.
Изменим файл my_colors.xml, добавив в него пару цветов:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="textViewBackColor">#A0EAE1</color> <color name="textViewFontColor">#00695C</color> </resources>
В файлах кода мы можем ссылаться на эти ресурсы через их идентификатор, который имеет следующий вид:
R.color.название_ресурса
Например, обращение к ресурсу textViewBackColor
:
R.color.textViewBackColor
Чтобы получить ресурс color в коде Kotlin, применяется встроенная функция androidx.compose.ui.res. colorResource(), в которую передается идентификатор ресурса и которая возвращает объект Color.
Используем ресурсы Color в коде Kotlin:
package com.example.helloapp import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.background import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.res.colorResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Text( text="Hello METANIT.COM", fontSize= 26.sp, color = colorResource(R.color.textViewFontColor), modifier = Modifier.padding(20.dp) .fillMaxWidth() .background(colorResource(R.color.textViewBackColor)) .padding(50.dp) ) } } }