Метод animateScrollToPage
Метод animateScrollToPage класса
PagerState
работает как
scrollToPage,
но перелистывает страницы с анимацией.
Метод suspend, его вызывают
внутри корутины.
Номер цели - параметр page,
дополнительное смещение - pageOffsetFraction.
Синтаксис
pagerState.animateScrollToPage(page = 1)
Параметры
| Параметр | Описание |
|---|---|
page |
Номер страницы, к которой листают. |
pageOffsetFraction |
Доля смещения между страницами при остановке анимации. |
Пример
Давайте плавно перейдём ко второй странице по кнопке:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.rememberCoroutineScope
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val pagerState = rememberPagerState(pageCount = { 2 })
val scope = rememberCoroutineScope()
Column {
Button(
onClick = {
scope.launch {
pagerState.animateScrollToPage(1)
}
},
) {
Text(text = "12345")
}
HorizontalPager(state = pagerState) { page ->
val text = if (page == 0) "abcde" else "12345"
Text(text = text)
}
}
}
}
}
На экране pager плавно доедет до страницы "12345".
Пример
Давайте листать VerticalPager анимацией при старте:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.pager.VerticalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val pagerState = rememberPagerState(pageCount = { 2 })
LaunchedEffect(Unit) {
pagerState.animateScrollToPage(1)
}
VerticalPager(state = pagerState) { page ->
val text = if (page == 0) "abcde" else "12345"
Text(text = text)
}
}
}
}
На экране после открытия анимация покажет
вторую страницу с текстом "12345".
Смотрите также
-
метод
scrollToPage,
который переключает страницу без анимации -
метод
animateScrollToItem,
плавная прокрутка списка -
функция
VerticalPager,
где тоже используют animateScrollToPage -
класс
PagerState,
где объявлен animateScrollToPage