A cheap attempt at a native Bluesky client for Android
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

ProfileView: Animate avatar transition in top bar

Use AnimatedVisibility with fade + horizontal expand/shrink for the
avatar appearing in the top bar on scroll, instead of instant show/hide.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

geesawra febb20de b709d693

+11 -2
+11 -2
app/src/main/java/industries/geesawra/monarch/ProfileView.kt
··· 5 5 import android.net.Uri 6 6 import androidx.activity.compose.rememberLauncherForActivityResult 7 7 import androidx.activity.result.contract.ActivityResultContracts 8 + import androidx.compose.animation.AnimatedVisibility 9 + import androidx.compose.animation.expandHorizontally 10 + import androidx.compose.animation.fadeIn 11 + import androidx.compose.animation.fadeOut 12 + import androidx.compose.animation.shrinkHorizontally 8 13 import androidx.compose.foundation.clickable 9 14 import androidx.compose.foundation.layout.Arrangement 10 15 import androidx.compose.foundation.layout.Box ··· 148 153 verticalAlignment = Alignment.CenterVertically, 149 154 horizontalArrangement = Arrangement.spacedBy(8.dp), 150 155 ) { 151 - if (showAvatarInBar && profile?.avatar != null) { 156 + AnimatedVisibility( 157 + visible = showAvatarInBar && profile?.avatar != null, 158 + enter = fadeIn() + expandHorizontally(), 159 + exit = fadeOut() + shrinkHorizontally(), 160 + ) { 152 161 AsyncImage( 153 162 model = ImageRequest.Builder(LocalContext.current) 154 - .data(profile.avatar?.uri) 163 + .data(profile?.avatar?.uri) 155 164 .crossfade(true) 156 165 .build(), 157 166 placeholder = ColorPainter(MaterialTheme.colorScheme.surfaceVariant),