11package com.techlads.composetv.home.carousel
22
3- import androidx.compose.animation.core.animateFloatAsState
4- import androidx.compose.foundation.BorderStroke
5- import androidx.compose.foundation.border
6- import androidx.compose.foundation.clickable
7- import androidx.compose.foundation.focusable
8- import androidx.compose.foundation.layout.*
9- import androidx.compose.material3.Card
10- import androidx.compose.material3.CardDefaults
11- import androidx.compose.material3.MaterialTheme
12- import androidx.tv.material3.Text
13- import androidx.compose.runtime.*
3+ import androidx.compose.foundation.layout.Box
4+ import androidx.compose.foundation.layout.aspectRatio
5+ import androidx.compose.foundation.layout.fillMaxSize
6+ import androidx.compose.foundation.layout.padding
7+ import androidx.compose.runtime.Composable
148import androidx.compose.ui.Alignment
159import androidx.compose.ui.Modifier
1610import androidx.compose.ui.focus.onFocusChanged
17- import androidx.compose.ui.graphics.Color
18- import androidx.compose.ui.graphics.graphicsLayer
1911import androidx.compose.ui.text.style.TextAlign
2012import androidx.compose.ui.tooling.preview.Preview
2113import androidx.compose.ui.unit.dp
22- import androidx.compose.ui.zIndex
23- import androidx.tv.material3.ExperimentalTvMaterial3Api
24- import androidx.tv.material3.contentColorFor
25- import com.techlads.composetv.theme.AppTheme
14+ import androidx.tv.material3.Text
2615import com.techlads.composetv.widgets.BorderedFocusableItem
2716
28-
29- @OptIn(ExperimentalTvMaterial3Api ::class )
3017@Composable
3118fun CarouselItem (parent : Int , child : Int , onItemFocus : (item: Int ) -> Unit ) {
3219 BorderedFocusableItem (
@@ -46,48 +33,15 @@ fun CarouselItem(parent: Int, child: Int, onItemFocus: (item: Int) -> Unit) {
4633}
4734
4835
49- @OptIn(ExperimentalTvMaterial3Api ::class )
5036@Composable
5137fun VerticalCarouselItem (parent : Int , child : Int ) {
52-
53- var isFocused by remember { mutableStateOf(false ) }
54- val scale = animateFloatAsState(if (isFocused) 1.05f else 1f )
55-
56-
57- Card (
38+ BorderedFocusableItem (
39+ onClick = { },
5840 modifier = Modifier
59- .zIndex(if (isFocused) 20f else 1f )
60- .graphicsLayer(
61- scaleX = scale.value,
62- scaleY = scale.value
63- )
6441 .padding(8 .dp)
65- .fillMaxWidth()
66- .aspectRatio(0.6f )
67- .onFocusChanged {
68- isFocused = it.isFocused
69- }
70- .border(
71- border = BorderStroke (
72- 1 .dp,
73- if (isFocused)
74- contentColorFor(backgroundColor = AppTheme .surface)
75- else
76- Color .Transparent
77- ), shape = MaterialTheme .shapes.medium
78- )
79- .clickable { }
80- .focusable(),
81- colors = CardDefaults .cardColors(
82- containerColor = AppTheme .surface,
83- contentColor = contentColorFor(backgroundColor = AppTheme .surface)
84- )
85- ) {
42+ .aspectRatio(0.6f )) {
8643 Box (contentAlignment = Alignment .Center , modifier = Modifier .fillMaxSize()) {
87- Text (
88- text = " Item $parent x $child " ,
89- textAlign = TextAlign .Center ,
90- )
44+ Text (text = " Item $parent x $child " , textAlign = TextAlign .Center )
9145 }
9246 }
9347}
0 commit comments