⭐ This project was created to display my tech knowledge in native Android development with Kotlin. More techincal info below.
Movies App is a native Android App made with Kotlin. The app is capable of getting information from a RESTful API, using Retrofit; displaying the data (LiveData) in cards, inside a Recycler View; displaying movies posters with Glide and utilizing Clean Architecture and SOLID patterns to make the code clean, reusable and decoupled.
Download the APK directly from this repo. You can check out here how to install an APK to your Android device.
-
Minimum SDK Level 25
-
Jetpack
- Live Data: Used for observe data from a reactive point of view. Allowing the data used in UI to be updated automatically.
- Lifecycle: Observe the Android lifecycle and manipulate the states from the UI after the lifecycle change.
- ViewModel: Used to retrieve the data from the Model layer and update the data from View.
- ViewBinding: Manages the XML layout views in Kotlin through a class.
- Recycler View: Show a more efficient way of displaying a list of Views in the screen, recycling the views for better performance.
-
Architecture
- MVVM (Model-View-ViewModel) + Clean Architecture: The first item is used to separate the logic of the app's UI, helping with testability and organization; also, the Clean Architecture helps to build the app's main system with well designed layers, who work with independency, facilitating with the scalability and maintenance.
- Repository pattern: This pattern help with the data layer´s abstraction
-
Libraries
- Glide: Used for image loading and caching.
- Retrofit & OkHTTP: Used to make the communication with a RESTful API
- Koin: Used for Dependency Injection
The Movies Database, this API provides all kind of data related to movies and series and it's completely free.
Layout created with CardView and Linear Layout. The app consumes the Movies API with Retrofit and OkHttp, and mapping the response into a movie object displayed by the Recycler View Screen created to display the details about a movie card. This screen contains an abstract and others info about the movie selected. Those infos are passed by de Main Activity via Intent.Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Google Play e o logótipo do Google Play são marcas comerciais da Google LLC.