The PhotoTag application is an Android project that enables users to manage their photos by associating them with descriptive tags. The app allows users to search for photos, save them, and manage their own photo collections. The app also features functionality to tag photos with details like artist name and date, which are stored in a local database.
- Home Screen: Displays a list of all saved photo tags in the database.
- Photo Search: Users can search for photos through an external API (e.g., Pixabay) and view them in a grid.
- Detail Screen: Users can view the details of a selected photo and add additional information to their photos.
- Delete Functionality: Users can delete photos from the home screen by swiping them.
- Splash Screen: A simple opening screen that navigates the user to the home screen.
-
Kotlin: The programming language used for Android development. It is modern, secure, and efficient, offering a safer and more concise syntax compared to Java.
-
Android SDK: The Software Development Kit required for developing Android applications. It includes tools and libraries needed to build, test, and debug Android apps.
-
Android Jetpack: A set of libraries, tools, and architectural guidance to help developers write high-quality Android apps. The following Jetpack components are used in this project:
- Room: A database library that simplifies data storage and retrieval in SQLite databases with an abstraction layer, providing a more robust and secure approach to managing app data.
- LiveData: A lifecycle-aware data holder class that allows UI components to observe changes in data in a way that respects the Android lifecycle.
- ViewModel: A class that is responsible for preparing and managing data for the UI. It allows data to survive configuration changes such as screen rotations.
- Navigation Component: A library for handling navigation within Android apps. It simplifies the process of navigating between fragments and passing data safely between them.
- Fragment: A modular section of an Android activity that allows for reusable UI components and easier management of large or complex UIs.
- ViewBinding: A feature that allows you to more easily write code that interacts with views. It eliminates the need for
findViewById()by generating a binding class for each XML layout file.
-
Hilt: A dependency injection library built on top of Dagger to simplify DI in Android applications. It is used in this project to manage dependencies like ViewModels and Repositories in a clean and scalable way.
-
Retrofit: A type-safe HTTP client for making network requests. It is used to handle API calls and automatically parse responses into data objects in this project.
-
Glide: An image loading and caching library. It is used to load images from the network into the app's UI efficiently and with minimal memory usage.
-
Material Components: A library that provides Material Design components and patterns for Android apps. It helps with creating intuitive and consistent UI designs, offering components like Floating Action Buttons, Buttons, Cards, and more.
-
RecyclerView: A flexible view for providing a limited window of large data sets. It is used in this project to display photo tags and other data in a scrollable list.
-
StaggeredGridLayoutManager: A layout manager used with RecyclerView that arranges items in a staggered grid, which is particularly useful when displaying items of varying sizes.
-
Floating Action Button: A button used for primary actions in the app. It provides easy access to common user interactions.
phototaggif.mp4
| Splash Screen | Home Screen | Detail Screen | ApiGallery Screen |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |



