LibCode»Блог

LibCode — это библиотека кода и знаний для разработчиков, где каждый найдет полезные ресурсы, уроки и инструменты для создания и совершенствования своих проектов.

MySQL | PHP | Kotlin | Python | C++ | JavaScript

Kotlin: Стандартные индикаторы загрузки

В Jetpack Compose есть несколько стандартных индикаторов загрузки:
  1. CircularProgressIndicator: Классический круговой индикатор.
  2. LinearProgressIndicator: Линейный индикатор.
  3. ActivityIndicator: Простой вращающийся индикатор.

Примеры их использования:
// Круговой индикатор
CircularProgressIndicator(
    modifier = Modifier
        .size(40.dp)
        .padding(16.dp),
    color = MaterialTheme.colorScheme.primary
)

// Линейный индикатор
LinearProgressIndicator(
    progress = 0.5f, // значение от 0 до 1
    modifier = Modifier
        .height(4.dp)
        .fillMaxWidth()
        .padding(16.dp)
)

// Простой индикатор активности
ActivityIndicator(
    modifier = Modifier
        .size(40.dp)
        .padding(16.dp),
    color = MaterialTheme.colorScheme.primary
)


Дополнительные возможности настройки:
  • Изменение размера через модификатор size().
  • Настройка цвета через параметр color.
  • Анимация прогресса для LinearProgressIndicator.
  • Стилизация через темы Material
...

Kotlin: Как получить часовой пояс устройства

В Kotlin можно получить часовой пояс пользователя несколькими способами.

Через TimeZone


val timeZone = TimeZone.getDefault()
val timeZoneId = timeZone.id // например: "Europe/Moscow"
val offset = timeZone.rawOffset / (1000 * 60 * 60) // смещение в часах

Через ZoneId (Рекомендуемый способ)


import java.time.ZoneId

val zoneId = ZoneId.systemDefault()
val zoneIdString = zoneId.toString() // например: "Europe/Moscow"

Через Calendar


import java.util.Calendar

val calendar = Calendar.getInstance()
val timeZone = calendar.timeZone
val offset = timeZone.getRawOffset()

Через LocalDateTime


import java.time.LocalDateTime
import java.time.ZoneId

val currentTime = LocalDateTime.now(ZoneId.systemDefault())

Примеры использования



Получение названия часового пояса
fun getUserTimeZone(): String {
    return ZoneId.systemDefault().toString()
}

Получение смещения от UTC
fun getTimeZoneOffset(): Int {
    val zone =
...

Kotlin: Функция println()

Функция println() является стандартной конструкцией в языке Kotlin, позволяющей выводить значения и выражения в консольный поток вывода. Ее название расшифровывается как «print line» («напечатать строку»), подразумевая, что после каждого вызова происходит автоматический перенос каретки на новую строку.

В этой статье мы детально рассмотрим особенности использования функции println(), ее синтаксис, варианты применения и лучшие практики.

Синтаксис и базовые примеры


Основная форма записи функции println() следующая:
println([value])

Параметр [value] необязателен и может содержать любое выражение или литеральное значение. Если аргумент отсутствует, то просто выводится новая строка.

Пример:
println("Hello, World!")

Результатом выполнения будет вывод в консоли следующей строки:
Hello, World!

Особенности функции println()


  • Автоматический перенос строки: После каждого вызова println() происходит переход на новую строку.
  • Возможность вывода любых выражений: Можно
...

Kotlin: Как уменьшить расстояние между строками в тексте

В Jetpack Compose есть несколько способов уменьшить расстояние между строками в тексте:

Через параметр lineSpacing в TextStyle:
Text(
    text = "Ваш текст",
    style = TextStyle(
        lineSpacing = 1.2f // значение меньше 1 уменьшит расстояние
    )
)

Через lineHeight в TextStyle:
Text(
    text = "Ваш текст",
    style = TextStyle(
        lineHeight = 20.sp // задайте конкретное значение в sp
    )
)

Для Column (если речь про расстояние между элементами):
Column(
    verticalArrangement = Arrangement.spacedBy(8.dp) // задайте нужное расстояние
) {
    Text("Строка 1")
    Text("Строка 2")
}

Для LazyColumn или LazyRow:
LazyColumn(
    verticalArrangement = Arrangement.spacedBy(8.dp)
) {
    items(itemsList) { item ->
        Text(item.text)
    }
}

Для нескольких Text в Column:
Column {
    Text("Первая строка")
    Spacer(modifier = Modifier.height(4.dp)) // задайте нужное значение
   
...

Kotlin: Разница между app.R и com.google.android.material.R

Разработчики Android нередко сталкиваются с путаницей относительно использования различных версий класса R, особенно когда речь идет о доступе к ресурсам своего приложения и сторонних библиотек. Эта статья поможет разобраться в разнице между app.R и com.google.android.material.R, а также научит правильно обращаться к нужным ресурсам.

Что такое классы R?


Класс R представляет собой специальную структуру, автоматически создаваемую Android Studio во время процесса сборки проекта. Он служит контейнером ссылок на ресурсы вашего приложения (изображения, цвета, стили, макеты и т.д.). Каждый ресурс автоматически получает уникальный числовой идентификатор, хранящийся в соответствующих полях класса R.

Классы R бывают двух типов:
  • Ваш собственный класс R, называемый app.R, соответствует ресурсам вашего проекта.
  • Класс R сторонней библиотеки, обозначаемый именем пакета библиотеки (например, com.google.android.material.R), содержит ссылки на ресурсы конкретной внешней библиотеки.

app.R


Что это?Это...