Метод animateScrollTo
Метод animateScrollTo класса
ScrollState
работает как
scrollTo,
но меняет value с анимацией.
Метод suspend, его вызывают
внутри корутины.
Целевое смещение передают параметром value.
Синтаксис
scrollState.animateScrollTo(500)
Параметры
| Параметр | Описание |
|---|---|
value |
Смещение прокрутки в пикселях, к которому ведут анимацию. |
Пример
Давайте плавно прокрутим Column к низу:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val scrollState = rememberScrollState()
val scope = rememberCoroutineScope()
Column {
Button(
onClick = {
scope.launch {
scrollState.animateScrollTo(scrollState.maxValue)
}
},
) {
Text(text = "12345")
}
Column(
modifier = Modifier.verticalScroll(scrollState),
) {
repeat(20) { Text(text = "abcde") }
Text(text = "12345")
}
}
}
}
}
На экране прокрутка плавно доедет
до строки "12345" внизу.
Пример
Давайте вернём прокрутку к началу при повторном нажатии:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val scrollState = rememberScrollState()
val scope = rememberCoroutineScope()
Column {
Button(
onClick = {
scope.launch {
scrollState.animateScrollTo(0)
}
},
) {
Text(text = "abcde")
}
Column(
modifier = Modifier.verticalScroll(scrollState),
) {
repeat(18) { Text(text = "12345") }
}
}
}
}
}
На экране после нажатия список плавно вернётся к первой строке.
Смотрите также
-
метод
scrollTo,
который меняет value без анимации -
метод
animateScrollToItem,
плавная прокрутка ленивого списка -
метод
verticalScroll,
который использует ScrollState -
класс
ScrollState,
где объявлен animateScrollTo