Skip to content

Fix stretched logo on the Android 12+ launch screen - #726

Merged
n13 merged 2 commits into
mainfrom
n13/android12-splash-branding
Nov 4, 2026
Merged

n13 merged 2 commits into
mainfrom
n13/android12-splash-branding

Conversation

@n13

@n13 n13 commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

On Android 12 and later the launch screen draws windowSplashScreenBrandingImage at the bottom, stretched to a fixed 200x80dp slot. PR #401 added assets/v2/android12_branding_800x320.png, the Quantus wordmark on an 800x320 canvas, for exactly that slot. The design update in #473 pointed android_12.branding at the square uppercase_q.png without regenerating, so the committed wordmark drawables kept shipping until 7e48d69 regenerated them from the square Q. Since then the Q renders 2.5x wider than tall.

Before, on the Pixel_7 emulator (Android 17), the logo's bounding box on the launch screen measured 522x188 px.

Fix

  • android_12.branding in pubspec.yaml points back at the 800x320 wordmark asset, so the next dart run flutter_native_splash:create keeps the fix.
  • The ten drawable-*-v31/android12branding.png files are the regenerated output, byte-identical to their content before 7e48d69.

Net diff against main: the ten drawables and one pubspec line. The -v31 resource qualifier means only Android 12+ resolves these drawables. Android 7 to 11 keep launch_background.xml with the centered Q, and the iOS launch images are untouched.

Verification

Debug build of this branch, cold launches captured while the launch window was up, logo measured on each frame:

Device Launch path Launches Logo Box
Pixel 7 emulator, Android 17, light activity intent 6 wordmark, bottom 506x101 px
Pixel 7 emulator, Android 17, dark activity intent 3 wordmark, bottom 506x101 px
flutter_emulator, Android 16 activity intent 4 wordmark, bottom 506x101 px
Pixel 7 profile, Android 12.0 (API 31) launcher icon tap 1 wordmark, bottom 506x101 px
Pixel 7 profile, Android 11 (API 30) activity intent 4 centered Q 105x105 px
iPhone 17 Pro simulator, light and dark simctl launch 6 centered Q unchanged
iPhone 17e simulator simctl launch 2 centered Q unchanged

Note for Android 12.0: a launch issued through am start shows Android's empty solid-color splash with no icon or branding, because 12.0 reserves the full splash for launches from the home screen. Tapping the app icon shows the wordmark. Later releases show it for shell launches too.

n13 added 2 commits November 4, 2026 07:23
Android 12+ draws the launch-screen Q as windowSplashScreenBrandingImage
and stretches that drawable to fill its fixed 200x80dp branding slot. The
branding drawables regenerated in 7e48d69 came from the square
uppercase_q.png, so the Q rendered 2.5x wider than tall.

Center the Q on a transparent 800x320 canvas (the slot's 4x size),
point android_12.branding at it and regenerate with
dart run flutter_native_splash:create. Only the ten
drawable-*-v31/android12branding.png files change; the pre-Android-12
layer list, the styles and the iOS output are untouched.
Restore assets/v2/android12_branding_800x320.png, the wordmark that
PR 401 made for the 200x80dp branding slot, and regenerate. The ten
drawable-*-v31/android12branding.png files return to their content
before 7e48d69. Android 7-11, which show the centered Q from
launch_background.xml, and iOS are untouched.
@n13 n13 added the bot-review Request automated review from review-bot label Nov 4, 2026

@n13 n13 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: Approve
Reviewer: GPT-6.1 Sol

Reviewed head 545d18a54f89f51e047aa598aa57fd9cfa8298b0 against base bbdfd2e152291118398771a16f638a24ea45fad0. No blocking findings.

The restored 800×320 wordmark produces the correct 200×80dp branding canvas at all five densities in both light and dark modes, matching Android's splash-screen specification. All ten drawables are byte-identical to their versions before 7e48d699; the diff leaves pre-Android-12 resources and iOS unchanged.

Validation:

  • Ran flutter_native_splash 2.4.7 with dependencies selected from the committed mobile lockfile in a separate scratch copy. The complete regenerated Android and iOS trees match the committed trees byte for byte.
  • Checked every branding image's dimensions and transparency, all five light/dark pairs, the resource references, and git diff --check; all passed.
  • Verified successful CI at this exact head: formatting, analysis, mobile tests, SDK tests, cold-wallet tests, and dependency cooldown.

Local app dependency setup stopped at lockfile enforcement because the default Flutter SDK is 3.44.4 versus the pinned 3.47.7, so app-level checks rely on CI. I did not independently repeat emulator cold launches.

@n13 n13 removed the bot-review Request automated review from review-bot label Nov 4, 2026
@n13
n13 merged commit d2c6514 into main Nov 4, 2026
6 checks passed
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