CameraScreen: use a BottomAppBar

This commit is contained in:
Pierre-Yves Nicolas
2025-06-24 20:39:04 +02:00
parent 46e84da804
commit 5ba634070f
2 changed files with 31 additions and 32 deletions

View File

@@ -38,6 +38,7 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.BottomAppBar
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
@@ -137,25 +138,24 @@ private fun CameraScreenScaffold(
onCapture: () -> Unit,
onFinalizePressed: () -> Unit,
) {
Scaffold { innerPadding ->
Box(modifier = Modifier.padding(innerPadding).fillMaxSize()) {
CameraPreviewWithOverlay(cameraPreview, cameraUiState)
MessageBox(cameraUiState.liveAnalysisState.inferenceTime)
Column(Modifier.align(Alignment.BottomCenter)) {
CaptureButton(
onClick = onCapture,
modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(16.dp)
)
Scaffold(
bottomBar = {
CameraScreenFooter(
pageList = pageList,
pageCount = cameraUiState.pageCount,
onFinalizePressed = onFinalizePressed,
modifier = Modifier,
)
}
) { innerPadding ->
Box(modifier = Modifier.padding(bottom = innerPadding.calculateBottomPadding()).fillMaxSize()) {
CameraPreviewWithOverlay(cameraPreview, cameraUiState)
MessageBox(cameraUiState.liveAnalysisState.inferenceTime)
CaptureButton(
onClick = onCapture,
modifier = Modifier
.align(Alignment.BottomCenter)
.padding(16.dp)
)
cameraUiState.captureState.processedImage?.let {
Surface(
color = Color.Black.copy(alpha = 0.3f),
@@ -242,20 +242,15 @@ fun CameraScreenFooter(
pageList: @Composable () -> Unit,
pageCount: Int,
onFinalizePressed: () -> Unit,
modifier: Modifier,
) {
Surface (
color = MaterialTheme.colorScheme.inverseOnSurface,
tonalElevation = 4.dp,
modifier = modifier
.fillMaxWidth()
.height(180.dp)
) {
Column {
Column (modifier = Modifier.background(MaterialTheme.colorScheme.primaryContainer)) {
pageList()
BottomAppBar(
tonalElevation = 4.dp,
) {
Row (
modifier = Modifier
.padding(horizontal = 16.dp, vertical = 8.dp)
.padding(horizontal = 16.dp, vertical = 1.dp)
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween

View File

@@ -20,6 +20,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
@@ -45,13 +46,12 @@ fun CommonPageList(
listState: LazyListState = rememberLazyListState(),
currentPageIndex: Int? = null,
) {
if (pageIds.isEmpty()) return
LazyRow (
state = listState,
contentPadding = PaddingValues(4.dp),
modifier = Modifier
.fillMaxWidth()
.background(MaterialTheme.colorScheme.secondaryContainer),
.background(MaterialTheme.colorScheme.surfaceContainerLow),
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically
) {
@@ -63,11 +63,12 @@ fun CommonPageList(
val isSelected = index == currentPageIndex
val borderColor =
if (isSelected) MaterialTheme.colorScheme.primary else Color.Transparent
val maxImageSize = 120.dp
val modifier =
if (bitmap.height > bitmap.width)
Modifier.height(120.dp)
Modifier.height(maxImageSize)
else
Modifier.width(120.dp)
Modifier.width(maxImageSize)
Image(
bitmap = bitmap,
contentDescription = null,
@@ -79,4 +80,7 @@ fun CommonPageList(
}
}
}
if (pageIds.isEmpty()) {
Box(modifier = Modifier.height(120.dp)) {}
}
}