<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