1+ package  com.example.compose.snippets.components 
2+ 
3+ import  androidx.annotation.DrawableRes 
4+ import  androidx.compose.foundation.Image 
5+ import  androidx.compose.foundation.layout.PaddingValues 
6+ import  androidx.compose.foundation.layout.fillMaxWidth 
7+ import  androidx.compose.foundation.layout.height 
8+ import  androidx.compose.foundation.layout.padding 
9+ import  androidx.compose.foundation.layout.wrapContentHeight 
10+ import  androidx.compose.material3.ExperimentalMaterial3Api 
11+ import  androidx.compose.material3.MaterialTheme 
12+ import  androidx.compose.material3.carousel.HorizontalMultiBrowseCarousel 
13+ import  androidx.compose.material3.carousel.HorizontalUncontainedCarousel 
14+ import  androidx.compose.material3.carousel.rememberCarouselState 
15+ import  androidx.compose.runtime.Composable 
16+ import  androidx.compose.runtime.remember 
17+ import  androidx.compose.ui.Modifier 
18+ import  androidx.compose.ui.layout.ContentScale 
19+ import  androidx.compose.ui.res.painterResource 
20+ import  androidx.compose.ui.tooling.preview.Preview 
21+ import  androidx.compose.ui.unit.dp 
22+ import  com.example.compose.snippets.R 
23+ 
24+ @OptIn(ExperimentalMaterial3Api ::class )
25+ @Preview
26+ //  [START android_compose_carousel_multi_browse_basic]
27+ @Composable
28+ private  fun  CarouselExamples_MultiBrowse () {
29+     data class  CarouselItem (
30+         val  id :  Int ,
31+         @DrawableRes val  imageResId :  Int ,
32+         val  contentDescription :  String 
33+     )
34+ 
35+     val  items =  remember {
36+         listOf (
37+             CarouselItem (0 , R .drawable.cupcake, " cupcake"  ),
38+             CarouselItem (1 , R .drawable.donut, " donut"  ),
39+             CarouselItem (2 , R .drawable.eclair, " eclair"  ),
40+             CarouselItem (3 , R .drawable.froyo, " froyo"  ),
41+             CarouselItem (4 , R .drawable.gingerbread, " gingerbread"  ),
42+         )
43+     }
44+ 
45+     HorizontalMultiBrowseCarousel (
46+         state =  rememberCarouselState { items.count() },
47+         modifier =  Modifier 
48+             .fillMaxWidth()
49+             .wrapContentHeight()
50+             .padding(top =  16 .dp, bottom =  16 .dp),
51+         preferredItemWidth =  186 .dp,
52+         itemSpacing =  8 .dp,
53+         contentPadding =  PaddingValues (horizontal =  16 .dp)
54+     ) { i -> 
55+         val  item =  items[i]
56+         Image (
57+             modifier =  Modifier 
58+                 .height(205 .dp)
59+                 .maskClip(MaterialTheme .shapes.extraLarge),
60+             painter =  painterResource(id =  item.imageResId),
61+             contentDescription =  item.contentDescription,
62+             contentScale =  ContentScale .Crop 
63+         )
64+     }
65+ }
66+ //  [END android_compose_carousel_multi_browse_basic]
67+ 
68+ @OptIn(ExperimentalMaterial3Api ::class )
69+ @Preview
70+ //  [START android_compose_carousel_uncontained_basic]
71+ @Composable
72+ private  fun  CarouselExamples () {
73+     data class  CarouselItem (
74+         val  id :  Int ,
75+         @DrawableRes val  imageResId :  Int ,
76+         val  contentDescription :  String 
77+     )
78+ 
79+     val  items =  remember {
80+         listOf (
81+             CarouselItem (0 , R .drawable.cupcake, " cupcake"  ),
82+             CarouselItem (1 , R .drawable.donut, " donut"  ),
83+             CarouselItem (2 , R .drawable.eclair, " eclair"  ),
84+             CarouselItem (3 , R .drawable.froyo, " froyo"  ),
85+             CarouselItem (4 , R .drawable.gingerbread, " gingerbread"  ),
86+         )
87+     }
88+ 
89+     HorizontalUncontainedCarousel (
90+         state =  rememberCarouselState { items.count() },
91+         modifier =  Modifier 
92+             .fillMaxWidth()
93+             .wrapContentHeight()
94+             .padding(top =  16 .dp, bottom =  16 .dp),
95+         itemWidth =  186 .dp,
96+         itemSpacing =  8 .dp,
97+         contentPadding =  PaddingValues (horizontal =  16 .dp)
98+     ) { i -> 
99+         val  item =  items[i]
100+         Image (
101+             modifier =  Modifier 
102+                 .height(205 .dp)
103+                 .maskClip(MaterialTheme .shapes.extraLarge),
104+             painter =  painterResource(id =  item.imageResId),
105+             contentDescription =  item.contentDescription,
106+             contentScale =  ContentScale .Crop 
107+         )
108+     }
109+ }
110+ //  [END android_compose_carousel_uncontained_basic]
0 commit comments