fix(splash): stop launch logo bleeding through transparent screens - #1314
Merged
Conversation
The launch splash drawable (@drawable/splash, containing ic_launcher_foreground — the white "F" logo) is set as android:windowBackground in Theme.Code and is never cleared after setContent. The outermost Compose root Box in App.kt had no background modifier, so any screen whose own root composable does not paint a full-size opaque background (e.g. MyAccountScreen: bare Column with fillMaxSize but no background; WalletScreen: bare Column and LazyColumn with no background) left the window drawable visible behind it. Screens that do paint an opaque background (CodeScaffold-backed MenuScreenContent / You tab, ChatScreen) happened to occlude it. Fix: apply fillMaxSize + background(CodeTheme.colors.background) to the single outermost root Box in App.kt that wraps both NewAppContent and AppContent nav paths. CodeTheme.colors.background is Color(0xFF19191A), identical to splash_background, so the only visual change is that the window drawable can no longer bleed through — no color regression on any screen. The cold-start splash (window background visible before first Compose frame) is unchanged; the fix only prevents bleed-through after Compose takes the surface. Haze blur sampling is unaffected: haze only samples Compose-layer pixels and its hazeSource Box is a child of this root Box, not behind it. Nav3 OverlayScene / bottom-sheet transparency is unaffected: those are inter-Compose-layer transparencies, which this change does not touch.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Users see the Flipcash "F" launch logo (white rounded-pill mark, no wordmark) stuck on screen over fully-interactive content — My Account settings, the Wallet tab, and chat threads — across the entire session. The logo appears centered on those screens but is absent on the You tab and Chat tab home.
Root cause
android:windowBackgroundinTheme.Codeis set to@drawable/splash(a layer-list:splash_backgroundcolor +ic_launcher_foregroundcentered). This drawable is never cleared afterMainActivity.setContent {}. Once Compose renders its first frame the window background sits in theDecorViewbehind the Compose surface for the Activity's entire lifetime.The outermost Compose root
BoxinApp.kthad no background modifier, so whether the window drawable bled through depended on whether each screen's own root happened to paint a full-size opaque background:MenuScreenContent) — usesCodeScaffold→ MaterialScaffold(backgroundColor = CodeTheme.colors.background)→ opaque; "F" hidden.MyAccountScreen) — bareColumn(fillMaxSize)with no background modifier → transparent; "F" bleeds through.WalletScreen) — bareColumn/LazyColumnwith no background → transparent center; "F" bleeds through.MessengerScreen) — paints its own opaque background; "F" hidden.The logo is the window drawable (behind Compose), not a Compose element —
navigator.replaceAlland all nav transitions have no effect on it.Fix
Paint
CodeTheme.colors.background(#19191A, identical tosplash_background) on the single outermost rootBoxinApp.ktthat wraps bothNewAppContentandAppContent. One change covers all screens on both nav paths.The cold-start splash (window background visible before the first Compose frame) is unchanged — the fix only prevents bleed-through after Compose takes the surface.
Safety
hazeSourceon the innerBoxinNewAppContent): unaffected. Haze only samples Compose-layer pixels; its source node is a child of this root Box, not behind it. The backdrop color used by the nav bar blur (CodeTheme.colors.background) is unchanged.OverlayScene/ bottom-sheets: unaffected. Their transparency is inter-Compose-layer (showing the screen behind them in the Compose hierarchy), which this change does not touch. The opaque root Box is below the entireNavDisplay.R.drawable.splash,ic_launcher_foreground,windowIsTranslucent, and translucent-theme patterns — zero hits in non-build-artifact files.