Skip to content

Thomas-Christian/CS-360

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Weight Logger - Android Weight Tracking Application

Overview and Requirements

The Weight Logger app was developed to meet the needs of individuals tracking weight changes over time in a simple, straightforward manner. While many fitness apps offer extensive features that can overwhelm users, Weight Logger focuses solely on weight tracking without unnecessary complexity. The primary requirements included creating an intuitive interface for adding weight entries with dates, visualizing progress toward weight goals, and providing notifications when approaching/meeting target weights. The app addresses the need for a dedicated weight tracking solution that eliminates distractions while providing meaningful feedback on progress.

User-Centered UI Design

The app features several key screens designed with user needs at the forefront. The main weight data screen displays a clean list of weight entries with prominent date and weight information, along with edit and delete buttons for easy management. The profile screen shows current weight goal information and calculates remaining pounds to lose or gain, providing immediate feedback on progress. The login/registration screens were kept minimal to reduce friction when starting with the app. These UI designs were successful because they prioritize the information users need most (current weight, goal, and progress) while making common actions like adding or editing entries readily accessible. The clean, vertical layout of weight entries with clear typography ensures good readability, while the small, appropriately sized buttons prevent accidental taps while still being accessible.

Development Approach

The development process followed an iterative approach, starting with the essential database structure and core functionality before adding features like notifications and goal tracking. One particularly effective strategy involved separating data operations into a dedicated DatabaseHelper class, making the code more maintainable and easier to test. Another technique was creating reusable fragments for different screens, which allowed for efficient navigation and state management throughout the app. These approaches can be applied to future projects by establishing a clear separation of concerns early in development and building features incrementally on top of a solid foundation. The experience gained from developing custom adapters for the weight entries could also benefit future projects requiring specialized list displays.

Testing Methodology

Testing was conducted through a combination of manual UI testing on physical devices and emulators across multiple Android versions. For database operations, tests verified that weight entries were properly saved, retrieved, and deleted. The weight goal calculations were tested with various scenarios to ensure accurate reporting of progress. This testing process was crucial as it revealed several issues that weren't immediately apparent during development. Through debugging with detailed logging, these issues were resolved before they could impact the user experience. The testing process highlighted the importance of verifying both isolated components and their integration within the larger application.

Innovation and Challenge Resolution

One significant challenge encountered was maintaining update synchronization between different fragments. When a user would add or edit a weight in one screen, the goal progress information on the profile screen needed to update immediately if visible. The initial implementation using interfaces and listeners created memory leak warnings due to static references to context objects. This was resolved by innovating a safer communication pattern that used the activity as a mediator without holding static references to fragments. The solution involved finding active fragments through the FragmentManager instead of caching them, preventing memory leaks while still allowing cross-fragment communication.

Areas of Technical Strength

The database implementation demonstrated particular technical strength, especially in designing a flexible schema that accommodates multiple users while maintaining data integrity. The DatabaseHelper class showcases effective use of SQLite in Android, with properly structured methods for CRUD operations and thoughtful query optimization. The implementation of the custom adapter for weight entries also highlights strong Android development skills, as it efficiently handles both the visual presentation of data and user interactions like editing and deleting entries. This component successfully balances performance considerations with a responsive user interface, demonstrating practical knowledge of Android architecture patterns and UI component lifecycle management.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages