Problem
The app's UI animations are minimal or non-existent in several areas, making transitions feel abrupt compared to standard Material You design patterns.
Current animation state from codebase
- Onboarding (
OnboardingScreen.kt, line 172-177): Uses AnimatedContent with slide transitions — good, but could be smoother
- SettingsScreen: No animations on collapsible Security section or toggle transitions
- DashboardScreen: Stats cards appear statically, no entry animations
- LogsScreen: Log entries have no list item animations
- Screen transitions: No shared element or fade transitions between bottom nav tabs
- OverlayActivity: Countdown timer updates via plain text — no progress animation
Proposed Improvements
Follow Material Motion guidelines (M3) for smooth, responsive animations:
Specific targets
- Bottom nav transitions: Fade/slide content transitions when switching between Dashboard, Exceptions, Logs, Settings
- Collapsible sections: Animated visibility for the Security Settings expand/collapse in
SettingsScreen.kt
- List animations:
AnimatedVisibility or animateItemPlacement() for LogsScreen entries and Exceptions list items
- Dashboard stats: Count-up animations for "Scanned Today" and "Removed Today" numbers
- Overlay countdown: Circular progress indicator instead of plain text countdown
- Toggle feedback: Ensure Material 3 toggle components use proper motion curves
- Content reveal: Staggered entry animation when screens load
Implementation approach
- Use Compose animation APIs:
AnimatedVisibility, animateContentSize, animateXxxAsState, AnimatedContent
- Respect
android:animateLayoutChanges equivalent in Compose
- Add
Motion easing specs to theme (Theme.kt)
- Keep animations lightweight — avoid jank on lower-end devices
- Respect system "Reduce motion" accessibility setting via
LocalAccessibilityManager
Problem
The app's UI animations are minimal or non-existent in several areas, making transitions feel abrupt compared to standard Material You design patterns.
Current animation state from codebase
OnboardingScreen.kt, line 172-177): UsesAnimatedContentwith slide transitions — good, but could be smootherProposed Improvements
Follow Material Motion guidelines (M3) for smooth, responsive animations:
Specific targets
SettingsScreen.ktAnimatedVisibilityoranimateItemPlacement()for LogsScreen entries and Exceptions list itemsImplementation approach
AnimatedVisibility,animateContentSize,animateXxxAsState,AnimatedContentandroid:animateLayoutChangesequivalent in ComposeMotioneasing specs to theme (Theme.kt)LocalAccessibilityManager