Feature #26
openX app: icon press to actual app opening transition. How it was made?
0%
Description
То как application открывается, это своего рода как обложка а книжки. Может технологически и функционально не важно, но изначальное впечатление начинается с самого начала. Так что вот, как один из примеров.
https://github.com/WesCSK/Animated-splash-screen-with-SwiftUI-Twitter-splash-screen
https://github.com/waseefakhtar/MotionLayoutTwitter
The X app (formerly Twitter) uses a custom animated splash/launch screen transition. When you tap the app icon on the home screen, the system shows a static launch image first (standard on iOS/Android), then the app loads and runs a custom animation: the X logo (or former bird) scales/pulses and dramatically expands to “reveal” the app’s home feed underneath. @iorel_x
This is not the default OS icon-zoom launch animation (though that still happens at the OS level). It’s an in-app effect built by X’s developers for branding.
How It’s Typically Implemented (iOS Focus)
This technique has been widely replicated since the original Twitter version. Here’s the core idea:
- Static Launch Screen (instant, non-animatable):
• Use LaunchScreen.storyboard (iOS) with a centered logo on a solid background (e.g., black or X’s brand color).
• This shows immediately while the app initializes. - Animated Splash View (in-app):
• A matching view controller/window overlays the real app content.
• The logo starts at normal size, often does a small scale-down then big scale-up animation (using Core Animation / CAKeyframeAnimation for precise timing, e.g., scale to 0.75x then up to 30-40x depending on screen size). medium.com - The “Reveal” Effect (the magic part):
• The logo is used as a mask on a layer covering the app content.
• As the mask (logo) scales up massively, it creates a circular/oval “hole” that expands outward, revealing the underlying feed.
• A background layer (often the same solid color) fades or is masked similarly.
• The foreground splash window is hidden/faded as the animation completes. reactnative.dev
Key techniques:
• Multiple UIWindows (one for background splash, one for foreground animated logo) layered above the main app window.
• CALayer.mask with scaling animation.
• CATransaction or animation groups for synchronization.
• The animation runs in viewDidAppear or via an AppDelegate/presenter for context-independent behavior (works even from notifications).
SwiftUI alternatives exist using .scaleEffect, masks, and withAnimation, but UIKit/Core Animation gives more precise control for this effect. Many tutorials replicate the old Twitter bird version. youtube.com
On Android
X uses the Android SplashScreen API (Android 12+), which supports animated icons out of the box. Custom transitions often use:
• MotionLayout (ConstraintLayout animations) for scaling sequences. youtube.com
• Or Jetpack Compose with animated splash composables.
• The logo/icon scales and transitions into the main UI.
Why This Feels Special
• It bridges the static launch screen seamlessly to live content.
• The expanding mask creates an engaging, branded “opening” effect rather than a plain fade.
• Timing is tuned (often ~300-800ms) so it feels responsive.
You can find open-source recreations on GitHub (search “Twitter splash animation Swift” or “Android MotionLayout Twitter”) or follow detailed Medium tutorials that break down the mask + scaling code. medium.com
If you’re building something similar, start with the static launch screen, then layer a masked animated view on top. Let me know the platform (iOS/Android/React Native) for more specific code snippets!
No data to display