Remember's modifiers in animations

This commit is contained in:
Vitor Pamplona 2023-10-30 14:57:57 -04:00
parent 59f7f5257b
commit 6d2a1ec1b9
5 changed files with 50 additions and 20 deletions

View File

@ -840,8 +840,8 @@ private fun MuteButton(
AnimatedVisibility(
visible = holdOn.value || controllerVisible.value,
modifier = modifier,
enter = fadeIn(),
exit = fadeOut()
enter = remember { fadeIn() },
exit = remember { fadeOut() }
) {
Box(modifier = VolumeBottomIconSize) {
Box(
@ -881,8 +881,8 @@ private fun KeepPlayingButton(
AnimatedVisibility(
visible = controllerVisible.value,
modifier = alignment,
enter = fadeIn(),
exit = fadeOut()
enter = remember { fadeIn() },
exit = remember { fadeOut() }
) {
Box(modifier = PinBottomIconSize) {
Box(

View File

@ -726,8 +726,8 @@ private fun DialogContent(
AnimatedVisibility(
visible = holdOn.value || controllerVisible.value,
enter = fadeIn(),
exit = fadeOut()
enter = remember { fadeIn() },
exit = remember { fadeOut() }
) {
Row(
modifier = Modifier

View File

@ -53,6 +53,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Alignment.Companion.BottomEnd
import androidx.compose.ui.Alignment.Companion.CenterVertically
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@ -70,6 +71,7 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.core.graphics.drawable.toBitmap
@ -2861,21 +2863,16 @@ private fun RepostNoteAuthorPicture(
accountViewModel: AccountViewModel,
nav: (String) -> Unit
) {
Box(modifier = Size55Modifier) {
Box(Size35Modifier.align(Alignment.TopStart)) {
GenericRepostSection(
baseAuthorPicture = {
NoteAuthorPicture(
baseNote = baseNote,
nav = nav,
accountViewModel = accountViewModel,
size = Size34dp
)
}
Box(Size18Modifier.align(Alignment.BottomStart).padding(1.dp)) {
RepostedIcon(modifier = Size18Modifier, MaterialTheme.colorScheme.placeholderText)
}
Box(Size35Modifier.align(Alignment.BottomEnd)) {
},
repostAuthorPicture = {
NoteAuthorPicture(
baseNote = baseRepost,
nav = nav,
@ -2883,6 +2880,39 @@ private fun RepostNoteAuthorPicture(
size = Size34dp
)
}
)
}
@Composable
@Preview
private fun GenericRepostSectionPreview() {
GenericRepostSection(
baseAuthorPicture = {
Text("ab")
},
repostAuthorPicture = {
Text("cd")
}
)
}
@Composable
private fun GenericRepostSection(
baseAuthorPicture: @Composable () -> Unit,
repostAuthorPicture: @Composable () -> Unit
) {
Box(modifier = Size55Modifier) {
Box(remember { Size35Modifier.align(Alignment.TopStart) }) {
baseAuthorPicture()
}
Box(remember { Size18Modifier.align(Alignment.BottomStart).padding(1.dp) }) {
RepostedIcon(modifier = Size18Modifier, MaterialTheme.colorScheme.placeholderText)
}
Box(remember { Size35Modifier.align(Alignment.BottomEnd) }, contentAlignment = BottomEnd) {
repostAuthorPicture()
}
}
}

View File

@ -80,7 +80,7 @@ fun NoteAuthorPicture(
) {
val author by baseNote.live().authorChanges.observeAsState(baseNote.author)
Crossfade(targetState = author) {
Crossfade(targetState = author, label = "NoteAuthorPicture") {
if (it == null) {
DisplayBlankAuthor(size, modifier)
} else {
@ -351,8 +351,8 @@ fun ObserveAndDisplayFollowingMark(userHex: String, iconSize: Dp, accountViewMod
WatchUserFollows(userHex, accountViewModel) { newFollowingState ->
AnimatedVisibility(
visible = newFollowingState,
enter = fadeIn(),
exit = fadeOut()
enter = remember { fadeIn() },
exit = remember { fadeOut() }
) {
Box(contentAlignment = Alignment.TopEnd) {
FollowingIcon(iconSize)

View File

@ -331,8 +331,8 @@ fun MainScreen(
floatingActionButton = {
AnimatedVisibility(
visible = shouldShow.value,
enter = scaleIn(),
exit = scaleOut()
enter = remember { scaleIn() },
exit = remember { scaleOut() }
) {
Box(
Size55Modifier