Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
226 of 502 menu
◀ ▶

Класс DraggableState

Класс DraggableState связан с методом draggable. Объект создают через rememberDraggableState и передают в параметр state. Текущий сдвиг читают из offset. Приходящие delta обрабатывает метод dispatchRawDelta или колбэк rememberDraggableState.

Синтаксис

val state = rememberDraggableState { delta -> offsetX += delta }

Методы

Метод Описание
dispatchRawDelta Передаёт необработанный delta в состояние.

Пример

Давайте сдвинем плашку через draggable и DraggableState:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.background import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable import androidx.compose.foundation.gestures.rememberDraggableState import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import kotlin.math.roundToInt class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var offsetX by remember { mutableFloatStateOf(0f) } val dragState = rememberDraggableState { delta -> offsetX += delta } Text( text = "abcde", modifier = Modifier .offset { IntOffset(offsetX.roundToInt(), 0) } .draggable( orientation = Orientation.Horizontal, state = dragState, ) .background(Color.LightGray) .padding(16.dp), ) } } }

На экране текст на серой плашке будет двигаться горизонтально вместе с пальцем.

Смотрите также

  • функция rememberDraggableState,
    которая создаёт DraggableState
  • метод draggable,
    который подаёт delta в state
  • метод dispatchRawDelta,
    который вручную добавляет смещение
  • метод offset,
    который рисует накопленный сдвиг
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить