This repository contains the implementation for Assignment 13 (Final Polish) of the Task Manager App project. Building upon the Offline-First architecture from the previous assignment, this update focuses on UI Modernization using Material Design 3, improving user interaction, and adding visual polish.
The primary objective is to elevate the look, feel, and usability of the application. We have transitioned from legacy widgets to modern Material 3 Components, implemented a consistent theming system, and introduced advanced interaction patterns like Modal Bottom Sheets and Staggered Animations to create a production-ready user experience.
- Consistent Theme: Applied
Theme.Material3.DayNight.NoActionBaracross the entire app. - Custom Color Scheme: Defined semantic colors (Primary, Secondary, Error, Surface) in
colors.xml, fully compatible with Light and Dark modes. - Typography: Custom text styles (
Headline,Body) used consistently to avoid hardcoded text sizes.
- Dynamic Modal Bottom Sheet: The Task Detail/Edit screen is now a flexible Bottom Sheet with advanced behavior:
- Half-Screen: Opens initially at 60% height for quick viewing.
- Full-Screen: Automatically expands when entering "Edit Mode" or scrolling.
- Gestures: Supports standard "swipe-down-to-dismiss" for seamless navigation.
- Floating Action Button (FAB): Replaced the toolbar "Add" button with a standard FAB for creating tasks.
- Material Toolbar: Implemented a customizable toolbar that handles app-level actions and navigation.
- Multi-language Support: The app is fully localized for English (default) and Spanish.
- All UI text (labels, buttons, messages) automatically adapts to the device's language settings.
- Staggered List Animations: Tasks slide in smoothly from the bottom when the list loads (
Alpha+Translateanimations). - Smart Chips: Category tags change color and icon dynamically based on the category (e.g., 🔴 Red/Alert for "Urgent", 🔵 Blue/Briefcase for "Work").
- Snackbars: Replaced intrusive Toasts with Snackbars for non-blocking feedback (e.g., "Task saved"). Full-Screen: Automatically expands to full-screen when entering "Edit Mode" or scrolling.
TaskDetailFragment.kt:
- Refactored to inherit from
BottomSheetDialogFragment. - Manages internal state to switch between "View Mode" and "Edit Mode" without changing fragments.
- Configures
BottomSheetBehaviorto handle half-expanded and fully-expanded states.
BindingAdapters.kt:
- Contains custom logic to dynamically style
Chipviews (colors/icons) directly from XML.
TaskAdapter.kt:
- Implements
AnimationSetinonBindViewHolderto trigger entry animations for new list items.
TaskFormFragment.kt & XMLs:
- Migrated all input fields to
TextInputLayout+TextInputEditText. - Replaced standard
SpinnerwithExposedDropdownMenu(AutoTextView). - Implemented
MaterialDatePickerfor date selection.
- Language Test: Change your device language to English or Spanish and verify all texts update instantly.
- Bottom Sheet Gestures:
- Tap a task to open the sheet (Half-height).
- Swipe down to close it.
- Tap "Edit" to expand it to Full-height.
- Visual Experience: Open the app and observe the tasks sliding in.
- Theme Toggle: Use the menu option to switch between Light and Dark themes.
- Category Logic: Create an "Urgent" task and verify the chip appears red with an alert icon.
- Tablet Layout: The Bottom Sheet is optimized for mobile devices. On larger screens, a Side Sheet might be a better alternative (future improvement).
- Conflict Resolution: The offline-first logic (from Assignment 12) remains active; UI updates reflect the local database state immediately.
- Google Material Components: For MD3 widgets (
MaterialCardView,BottomSheet,FloatingActionButton).
This assignment is part of the Mobile Development course at Universidad de Vigo. See the course syllabus and lab instructions for more details.
✅ Assignment 13 released