import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.pagerTabIndicatorOffset
import com.google.accompanist.pager.rememberPagerState
import com.meter_alc_rgb.weatherappcomposey.R
import com.meter_alc_rgb.weatherappcomposey.data.WeatherModel
import com.meter_alc_rgb.weatherappcomposey.ui.theme.BlueLight
import kotlinx.coroutines.launch
@Composable
fun MainCard(currentDay: MutableState<WeatherModel>) {
Column(
modifier = Modifier
.padding(5.dp)
) {
Card(
modifier = Modifier.fillMaxWidth(),
backgroundColor = BlueLight,
elevation = 0.dp
) {
Column(
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
text = currentDay.value.time,
modifier = Modifier.padding(
top = 8.dp,
start = 8.dp
),
style = TextStyle(fontSize = 15.sp),
color = Color.White
)
AsyncImage(
model = "https:" + currentDay.value.icon,
contentDescription = "im2",
modifier = Modifier
.padding(
top = 8.dp,
end = 8.dp
)
.size(35.dp)
)
}
Text(
text = currentDay.value.city,
style = TextStyle(fontSize = 24.sp),
color = Color.White
)
Text(
text = currentDay.value.currentTemp.toFloat().toInt().toString() + "ºC",
style = TextStyle(fontSize = 65.sp),
color = Color.White
)
Text(
text = currentDay.value.condition,
style = TextStyle(fontSize = 16.sp),
color = Color.White
)
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
IconButton(
onClick = {
}
) {
Icon(
painter = painterResource(id = R.drawable.ic_search),
contentDescription = "im3",
tint = Color.White
)
}
Text(
text = "${currentDay.value
.maxTemp.toFloat().toInt()}ºC/${currentDay
.value.minTemp.toFloat().toInt()}ºC",
style = TextStyle(fontSize = 16.sp),
color = Color.White
)
IconButton(
onClick = {
}
) {
Icon(
painter = painterResource(id = R.drawable.ic_sync),
contentDescription = "im4",
tint = Color.White
)
}
}
}
}
}
}
@OptIn(ExperimentalPagerApi::class)
@Composable
fun TabLayout(daysList: MutableState<List<WeatherModel>>) {
val tabList = listOf("HOURS", "DAYS")
val pagerState = rememberPagerState()
val tabIndex = pagerState.currentPage
val coroutineScope = rememberCoroutineScope()
Column(
modifier = Modifier
.padding(
start = 5.dp,
end = 5.dp
)
.clip(RoundedCornerShape(5.dp))
) {
TabRow(
selectedTabIndex = tabIndex,
indicator = { pos ->
TabRowDefaults.Indicator(
Modifier.pagerTabIndicatorOffset(pagerState, pos)
)
},
backgroundColor = BlueLight,
contentColor = Color.White
) {
tabList.forEachIndexed { index, text ->
Tab(
selected = false,
onClick = {
coroutineScope.launch {
pagerState.animateScrollToPage(index)
}
},
text = {
Text(text = text)
}
)
}
}
HorizontalPager(
count = tabList.size,
state = pagerState,
modifier = Modifier.weight(1.0f)
) { index ->
LazyColumn(
modifier = Modifier.fillMaxSize()
) {
itemsIndexed(
daysList.value
) { _, item ->
ListItem(item)
}
}
}
}
}
Урок #15(#7) – getData(), урок #17(#9) – MainCard()
А где можно посмотреть урок #16(#8)?
пропущеный урок
https://www.youtube.com/watch?v=0En9edGaWE4&list=PLmjT2NFTgg1erAf98JNR8z7jGIZZW4y5e&index=7