Skip to content

chore(brand): replace launcher icon + splash glyph with the Stack mark#29

Merged
netqo merged 1 commit into
devfrom
chore/brand-launcher-icon
May 27, 2026
Merged

chore(brand): replace launcher icon + splash glyph with the Stack mark#29
netqo merged 1 commit into
devfrom
chore/brand-launcher-icon

Conversation

@netqo
Copy link
Copy Markdown
Owner

@netqo netqo commented May 27, 2026

Summary

  • Replaces the Android Studio template robot with the Stack brand glyph (the layered violet squares from LoginScreen.StackLogoGlyph) on both the launcher icon and the SplashScreen API mark.
  • Adds a dedicated monochrome variant for Android 13+ themed icons (the previous adaptive-icon XML pointed <monochrome> at the colored foreground, which the platform can't recolor cleanly).
  • Splash gets its own larger drawable (ic_brand_splash) because the launcher foreground has to stay inside the adaptive-icon safe zone and would render visibly small in the SplashScreen icon area.

Notes

  • Legacy mipmap-{m,h,xh,xxh,xxxh}dpi PNGs are intentionally untouched. They only ship to API 24-25 devices that can't load the adaptive-icon XML (min SDK is 24, so the fallback is required); regenerating PNGs from the vector needs a build-time tool that isn't wired in yet.
  • Background plate is #0B0B12 (SurfaceBase) so the splash-to-Compose transition doesn't flash a different color.

Test plan

  • ./gradlew assembleDebug
  • ./gradlew ktlintCheck
  • ./gradlew detekt
  • Installed on device with pm clear: launcher shows the brand glyph, splash shows the larger version on the dark background, content fades in without a color flash.

The Android Studio template robot was still shipping as the app icon
and as the splash mark. Ports the layered-squares glyph the login
hero uses (LoginScreen.StackLogoGlyph) into the launcher + splash
slots so the app's branding is consistent from the launcher tap
through to the first Compose frame.

  * ic_launcher_foreground: brand glyph sized for the adaptive-icon
    safe zone (central 66dp of a 108dp viewport) so the corners
    survive round / squircle launcher masks.
  * ic_launcher_background: solid SurfaceBase (#0B0B12) plate that
    matches the window background, so the splash-to-content
    transition doesn't flash a different color.
  * ic_launcher_monochrome: single-tint variant for Android 13+
    themed icons (the previous adaptive-icon XML pointed monochrome
    at the colored foreground, which the platform can't recolor
    cleanly).
  * ic_brand_splash: standalone splash glyph that fills the full
    108dp viewport. The launcher foreground has to keep its content
    inside the safe zone and would render visibly small in the
    SplashScreen API icon area (no mask is applied there); this
    drawable expands the same three squares so the splash reads as
    the Stack mark instead of a tiny inset.
  * themes.xml: splash theme now points at ic_brand_splash.

Legacy mipmap-{m,h,xh,xxh,xxxh}dpi PNGs are untouched. They only
ship to API 24-25 devices that can't load the adaptive-icon XML
(min SDK is 24, so the fallback is required); generating new PNGs
from the vector needs a build-time tool that isn't wired in yet.
@netqo netqo merged commit 6bdd853 into dev May 27, 2026
2 checks passed
@netqo netqo deleted the chore/brand-launcher-icon branch May 27, 2026 22:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant