Moved ReaderScreen top and bottom bars color to Theme.kt → Colors.readerSystemBarsColor + Longer delay for progress to update(may result in a little performance improvement). (v1.0.1)

This commit is contained in:
acclorite 2024-06-09 20:33:34 +03:00
parent e033294df0
commit 2a20ab29fa
5 changed files with 15 additions and 16 deletions

View file

@ -165,7 +165,6 @@ private fun ReaderScreen(
) { ) {
val context = LocalContext.current as ComponentActivity val context = LocalContext.current as ComponentActivity
val density = LocalDensity.current val density = LocalDensity.current
val systemBarsColor = MaterialTheme.colorScheme.surfaceContainerHighest.copy(0.94f)
val nestedScrollConnection = remember(state) { val nestedScrollConnection = remember(state) {
object : NestedScrollConnection { object : NestedScrollConnection {
@ -284,8 +283,7 @@ private fun ReaderScreen(
state = state, state = state,
onEvent = onEvent, onEvent = onEvent,
onLibraryUpdateEvent = onLibraryEvent, onLibraryUpdateEvent = onLibraryEvent,
onHistoryUpdateEvent = onHistoryEvent, onHistoryUpdateEvent = onHistoryEvent
containerColor = systemBarsColor
) )
} }
}, },
@ -300,8 +298,7 @@ private fun ReaderScreen(
state = state, state = state,
onEvent = onEvent, onEvent = onEvent,
onLibraryUpdateEvent = onLibraryEvent, onLibraryUpdateEvent = onLibraryEvent,
onHistoryUpdateEvent = onHistoryEvent, onHistoryUpdateEvent = onHistoryEvent
containerColor = systemBarsColor
) )
} }
} }

View file

@ -20,7 +20,6 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import ua.acclorite.book_story.presentation.data.LocalNavigator import ua.acclorite.book_story.presentation.data.LocalNavigator
import ua.acclorite.book_story.presentation.data.removeDigits import ua.acclorite.book_story.presentation.data.removeDigits
@ -29,6 +28,7 @@ import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent
import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent
import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent
import ua.acclorite.book_story.presentation.screens.reader.data.ReaderState import ua.acclorite.book_story.presentation.screens.reader.data.ReaderState
import ua.acclorite.book_story.presentation.ui.Colors
/** /**
* Reader bottom bar. Has a slider to change progress. * Reader bottom bar. Has a slider to change progress.
@ -37,15 +37,13 @@ import ua.acclorite.book_story.presentation.screens.reader.data.ReaderState
* @param onEvent [ReaderEvent] callback. * @param onEvent [ReaderEvent] callback.
* @param onLibraryUpdateEvent [LibraryEvent] callback. * @param onLibraryUpdateEvent [LibraryEvent] callback.
* @param onHistoryUpdateEvent [HistoryEvent] callback. * @param onHistoryUpdateEvent [HistoryEvent] callback.
* @param containerColor Container color.
*/ */
@Composable @Composable
fun ReaderBottomBar( fun ReaderBottomBar(
state: State<ReaderState>, state: State<ReaderState>,
onEvent: (ReaderEvent) -> Unit, onEvent: (ReaderEvent) -> Unit,
onLibraryUpdateEvent: (LibraryEvent.OnUpdateBook) -> Unit, onLibraryUpdateEvent: (LibraryEvent.OnUpdateBook) -> Unit,
onHistoryUpdateEvent: (HistoryEvent.OnUpdateBook) -> Unit, onHistoryUpdateEvent: (HistoryEvent.OnUpdateBook) -> Unit
containerColor: Color
) { ) {
val navigator = LocalNavigator.current val navigator = LocalNavigator.current
val progress by remember(state.value.book.progress) { val progress by remember(state.value.book.progress) {
@ -61,7 +59,7 @@ fun ReaderBottomBar(
Column( Column(
Modifier Modifier
.fillMaxWidth() .fillMaxWidth()
.background(containerColor) .background(Colors.readerSystemBarsColor)
.clickable( .clickable(
interactionSource = null, interactionSource = null,
indication = null, indication = null,

View file

@ -21,7 +21,6 @@ import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontFamily
@ -37,6 +36,7 @@ import ua.acclorite.book_story.presentation.screens.history.data.HistoryEvent
import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent import ua.acclorite.book_story.presentation.screens.library.data.LibraryEvent
import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent import ua.acclorite.book_story.presentation.screens.reader.data.ReaderEvent
import ua.acclorite.book_story.presentation.screens.reader.data.ReaderState import ua.acclorite.book_story.presentation.screens.reader.data.ReaderState
import ua.acclorite.book_story.presentation.ui.Colors
/** /**
* Reader top bar. Displays title of the book. * Reader top bar. Displays title of the book.
@ -45,7 +45,6 @@ import ua.acclorite.book_story.presentation.screens.reader.data.ReaderState
* @param onEvent [ReaderEvent] callback. * @param onEvent [ReaderEvent] callback.
* @param onLibraryUpdateEvent [LibraryEvent] callback. * @param onLibraryUpdateEvent [LibraryEvent] callback.
* @param onHistoryUpdateEvent [HistoryEvent] callback. * @param onHistoryUpdateEvent [HistoryEvent] callback.
* @param containerColor Container color.
*/ */
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
@ -53,8 +52,7 @@ fun ReaderTopBar(
state: State<ReaderState>, state: State<ReaderState>,
onEvent: (ReaderEvent) -> Unit, onEvent: (ReaderEvent) -> Unit,
onLibraryUpdateEvent: (LibraryEvent.OnUpdateBook) -> Unit, onLibraryUpdateEvent: (LibraryEvent.OnUpdateBook) -> Unit,
onHistoryUpdateEvent: (HistoryEvent.OnUpdateBook) -> Unit, onHistoryUpdateEvent: (HistoryEvent.OnUpdateBook) -> Unit
containerColor: Color
) { ) {
val navigator = LocalNavigator.current val navigator = LocalNavigator.current
val context = LocalContext.current as ComponentActivity val context = LocalContext.current as ComponentActivity
@ -161,7 +159,7 @@ fun ReaderTopBar(
} }
}, },
colors = TopAppBarDefaults.topAppBarColors( colors = TopAppBarDefaults.topAppBarColors(
containerColor = containerColor containerColor = Colors.readerSystemBarsColor
) )
) )
} }

View file

@ -1279,7 +1279,7 @@ class ReaderViewModel @Inject constructor(
snapshotFlow { snapshotFlow {
firstVisibleItemIndex to firstVisibleItemOffset firstVisibleItemIndex to firstVisibleItemOffset
} }
.debounce(200) .debounce(300)
.collectLatest { items -> .collectLatest { items ->
val listState = _state.value.listState val listState = _state.value.listState
if ( if (

View file

@ -115,6 +115,12 @@ fun BookStoryTheme(
) )
} }
object Colors {
val readerSystemBarsColor: Color
@Composable
get() = MaterialTheme.colorScheme.surfaceContainerHighest.copy(0.94f)
}
@Composable @Composable
private fun animateColor(targetColor: Color): Color { private fun animateColor(targetColor: Color): Color {
return animateColorAsState( return animateColorAsState(