• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download

<lambda>null1 package com.airbnb.lottie.sample.compose.examples
2 
3 import androidx.compose.foundation.background
4 import androidx.compose.foundation.layout.Box
5 import androidx.compose.foundation.layout.fillMaxSize
6 import androidx.compose.foundation.pager.HorizontalPager
7 import androidx.compose.foundation.pager.PagerState
8 import androidx.compose.foundation.pager.rememberPagerState
9 import androidx.compose.runtime.Composable
10 import androidx.compose.runtime.derivedStateOf
11 import androidx.compose.runtime.getValue
12 import androidx.compose.runtime.remember
13 import androidx.compose.ui.Modifier
14 import androidx.compose.ui.graphics.Color
15 import com.airbnb.lottie.compose.LottieAnimation
16 import com.airbnb.lottie.compose.LottieCompositionSpec
17 import com.airbnb.lottie.compose.rememberLottieComposition
18 import com.airbnb.lottie.sample.compose.R
19 
20 @Composable
21 fun ViewPagerExamplePage() {
22     val colors = listOf(Color.Red, Color.Green, Color.Blue, Color.Magenta)
23     val pagerState = rememberPagerState { colors.size }
24     Box(
25         modifier = Modifier
26             .fillMaxSize(),
27     ) {
28         HorizontalPager(pagerState) { page ->
29             Box(
30                 modifier = Modifier
31                     .fillMaxSize()
32                     .background(colors[page]),
33             )
34         }
35         WalkthroughAnimation(pagerState, colors.size)
36     }
37 }
38 
39 @Composable
WalkthroughAnimationnull40 private fun WalkthroughAnimation(pagerState: PagerState, size: Int) {
41     val composition by rememberLottieComposition(LottieCompositionSpec.RawRes(R.raw.walkthrough))
42     val progress by remember { derivedStateOf { (pagerState.currentPage + pagerState.currentPageOffsetFraction) / (size - 1f) } }
43     LottieAnimation(
44         composition,
45         { progress },
46         modifier = Modifier
47             .fillMaxSize(),
48     )
49 }
50