Skip to content

nicko-08/rodavia-xmas-card-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jetpack Compose Christmas Card App

A festive Android application built with Jetpack Compose, showcasing modern Android architecture, animations, and lifecycle-aware media handling.


Overview

This Christmas Card is a high-fidelity digital greeting app designed to demonstrate modern Android development practices.

Rather than a static card, the app delivers an immersive experience through:

  • Animated UI elements
  • Automated slideshow transitions
  • Lifecycle-aware audio playback

Key Technical Features

1. Advanced Compose Animations

  • Twinkle Effect Custom FadingImage component using rememberInfiniteTransition and keyframes to simulate holiday lights with non-linear alpha animation.

  • State-Driven Slideshow Uses LaunchedEffect with coroutine-based timers to control UI state transitions for a smooth image carousel.


2. Lifecycle-Aware Media Management

  • SoundManager Utility A custom wrapper around the Android MediaPlayer API:

    • Handles onPause, onDestroy, and error states
    • Prevents memory leaks and orphaned threads
  • Contextual Audio Transitions Seamlessly switches audio between Splash Screen and Home Screen using controlled playback logic.


3. Modern Android Architecture

  • Navigation Component Clean implementation of Jetpack Navigation Compose with structured routing.

  • Material 3 Theming

    • Custom color palette (Christmas Red/Gold)
    • Dynamic color support
    • Custom typography system
  • Splash Screen API Integrated androidx.core:core-splashscreen for a professional launch experience.


Tech Stack

  • Language: Kotlin
  • UI Framework: Jetpack Compose
  • Navigation: Jetpack Navigation Compose
  • Concurrency: Kotlin Coroutines
  • Media: MediaPlayer API
  • Design System: Material Design 3

Project Structure

com.example.rodavia_christmascard
├── components     # Reusable UI components (stateless)
├── data           # Business logic & utilities (e.g., SoundManager)
├── ui.screens     # Screen-level composables (stateful)
├── ui.theme       # Colors, typography, and theming
└── MainActivity   # Entry point and navigation graph

Technical Challenges Solved

  • Efficient Infinite Animations Used infiniteRepeatable specs to ensure smooth animations without unnecessary recompositions.

  • Audio Lifecycle Management Prevented overlapping audio between screens using a controlled stop() before play() strategy.

  • State Persistence Managed splash screen state across lifecycle events to ensure proper initialization before UI transition.


Getting Started

Prerequisites

  • Android Studio Iguana or newer
  • Android SDK (API 31+ recommended)

Setup

git clone <repo-url>
  1. Open the project in Android Studio
  2. Sync Gradle
  3. Run on emulator or physical device

Purpose

This project demonstrates:

  • Modern Android UI development with Compose
  • Animation systems and state management
  • Lifecycle-aware resource handling
  • Clean and modular architecture

About

Interactive Christmas card app built with Jetpack Compose, featuring animations, slideshow, and lifecycle-aware audio.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages