CameraScreen: use a BottomAppBar
This commit is contained in:
@@ -38,6 +38,7 @@ import androidx.compose.foundation.layout.width
|
|||||||
import androidx.compose.foundation.lazy.LazyListState
|
import androidx.compose.foundation.lazy.LazyListState
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
|
import androidx.compose.material3.BottomAppBar
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Scaffold
|
import androidx.compose.material3.Scaffold
|
||||||
@@ -137,25 +138,24 @@ private fun CameraScreenScaffold(
|
|||||||
onCapture: () -> Unit,
|
onCapture: () -> Unit,
|
||||||
onFinalizePressed: () -> Unit,
|
onFinalizePressed: () -> Unit,
|
||||||
) {
|
) {
|
||||||
Scaffold { innerPadding ->
|
Scaffold(
|
||||||
Box(modifier = Modifier.padding(innerPadding).fillMaxSize()) {
|
bottomBar = {
|
||||||
|
CameraScreenFooter(
|
||||||
|
pageList = pageList,
|
||||||
|
pageCount = cameraUiState.pageCount,
|
||||||
|
onFinalizePressed = onFinalizePressed,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
) { innerPadding ->
|
||||||
|
Box(modifier = Modifier.padding(bottom = innerPadding.calculateBottomPadding()).fillMaxSize()) {
|
||||||
CameraPreviewWithOverlay(cameraPreview, cameraUiState)
|
CameraPreviewWithOverlay(cameraPreview, cameraUiState)
|
||||||
MessageBox(cameraUiState.liveAnalysisState.inferenceTime)
|
MessageBox(cameraUiState.liveAnalysisState.inferenceTime)
|
||||||
|
CaptureButton(
|
||||||
Column(Modifier.align(Alignment.BottomCenter)) {
|
onClick = onCapture,
|
||||||
CaptureButton(
|
modifier = Modifier
|
||||||
onClick = onCapture,
|
.align(Alignment.BottomCenter)
|
||||||
modifier = Modifier
|
.padding(16.dp)
|
||||||
.align(Alignment.CenterHorizontally)
|
)
|
||||||
.padding(16.dp)
|
|
||||||
)
|
|
||||||
CameraScreenFooter(
|
|
||||||
pageList = pageList,
|
|
||||||
pageCount = cameraUiState.pageCount,
|
|
||||||
onFinalizePressed = onFinalizePressed,
|
|
||||||
modifier = Modifier,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
cameraUiState.captureState.processedImage?.let {
|
cameraUiState.captureState.processedImage?.let {
|
||||||
Surface(
|
Surface(
|
||||||
color = Color.Black.copy(alpha = 0.3f),
|
color = Color.Black.copy(alpha = 0.3f),
|
||||||
@@ -242,20 +242,15 @@ fun CameraScreenFooter(
|
|||||||
pageList: @Composable () -> Unit,
|
pageList: @Composable () -> Unit,
|
||||||
pageCount: Int,
|
pageCount: Int,
|
||||||
onFinalizePressed: () -> Unit,
|
onFinalizePressed: () -> Unit,
|
||||||
modifier: Modifier,
|
|
||||||
) {
|
) {
|
||||||
Surface (
|
Column (modifier = Modifier.background(MaterialTheme.colorScheme.primaryContainer)) {
|
||||||
color = MaterialTheme.colorScheme.inverseOnSurface,
|
pageList()
|
||||||
tonalElevation = 4.dp,
|
BottomAppBar(
|
||||||
modifier = modifier
|
tonalElevation = 4.dp,
|
||||||
.fillMaxWidth()
|
) {
|
||||||
.height(180.dp)
|
|
||||||
) {
|
|
||||||
Column {
|
|
||||||
pageList()
|
|
||||||
Row (
|
Row (
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(horizontal = 16.dp, vertical = 8.dp)
|
.padding(horizontal = 16.dp, vertical = 1.dp)
|
||||||
.fillMaxWidth(),
|
.fillMaxWidth(),
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = Arrangement.SpaceBetween
|
horizontalArrangement = Arrangement.SpaceBetween
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import androidx.compose.foundation.background
|
|||||||
import androidx.compose.foundation.border
|
import androidx.compose.foundation.border
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
@@ -45,13 +46,12 @@ fun CommonPageList(
|
|||||||
listState: LazyListState = rememberLazyListState(),
|
listState: LazyListState = rememberLazyListState(),
|
||||||
currentPageIndex: Int? = null,
|
currentPageIndex: Int? = null,
|
||||||
) {
|
) {
|
||||||
if (pageIds.isEmpty()) return
|
|
||||||
LazyRow (
|
LazyRow (
|
||||||
state = listState,
|
state = listState,
|
||||||
contentPadding = PaddingValues(4.dp),
|
contentPadding = PaddingValues(4.dp),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.background(MaterialTheme.colorScheme.secondaryContainer),
|
.background(MaterialTheme.colorScheme.surfaceContainerLow),
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
@@ -63,11 +63,12 @@ fun CommonPageList(
|
|||||||
val isSelected = index == currentPageIndex
|
val isSelected = index == currentPageIndex
|
||||||
val borderColor =
|
val borderColor =
|
||||||
if (isSelected) MaterialTheme.colorScheme.primary else Color.Transparent
|
if (isSelected) MaterialTheme.colorScheme.primary else Color.Transparent
|
||||||
|
val maxImageSize = 120.dp
|
||||||
val modifier =
|
val modifier =
|
||||||
if (bitmap.height > bitmap.width)
|
if (bitmap.height > bitmap.width)
|
||||||
Modifier.height(120.dp)
|
Modifier.height(maxImageSize)
|
||||||
else
|
else
|
||||||
Modifier.width(120.dp)
|
Modifier.width(maxImageSize)
|
||||||
Image(
|
Image(
|
||||||
bitmap = bitmap,
|
bitmap = bitmap,
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
@@ -79,4 +80,7 @@ fun CommonPageList(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (pageIds.isEmpty()) {
|
||||||
|
Box(modifier = Modifier.height(120.dp)) {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user