Автовоспроизведение изображений на пейджере аккомпаниатора

Реализую горизонтальный пейджер с концертмейстером. Есть ли элегантный способ автоматически переключать изображения каждые 5 секунд?

В противном случае мне пришлось бы имитировать ручное смахивание, используя канал в модели просмотра, который увеличивает текущую страницу каждые 5 секунд ... что, честно говоря, я не совсем фанат.

Перед Compose я использовал карусель Why Not Image , у которой есть встроенное свойство автовоспроизведения.

Любая помощь будет оценена по достоинству. Спасибо!

1 ответ

Вы можете сделать следующее:

      val images = // list of your images...

val pageState = rememberPagerState(pageCount = images.size)
HorizontalPager(state = pageState) {
  // Your content...
}

// This is the interesting part, when your page changes,
// the LaunchedEffect will run again
LaunchedEffect(pageState.currentPage) {
    delay(3000) // wait for 3 seconds.
    // increasing the position and check the limit
    var newPosition = pageState.currentPage + 1
    if (newPosition > images.lastIndex) newPosition = 0
    // scrolling to the new position.
    pageState.animateScrollToPage(newPosition)
}

Вот результат (в GIF интервал - 1 секунда):

Другие вопросы по тегам