Table of Contents
This project was created in preparation for a job interview. It was created with no previous knowledge of creating Android apps or writing in Kotlin. I enjoyed creating it in about three days and look forward to working with Android studio in the future.
The assignment:
Create a single-screen native Android application showcasing a list overview of a typical card deck, including numbered cards 2-10, Joker, Queen, King, and Ace for each suit (spade, clover, heart, or diamond). You have the creative freedom to design how each card is presented within the list.
Requirements:
- Develop an Android app using Kotlin.
- Implement a single screen that displays a list of cards.
- Include cards for numbered values 2-10, Joker, Queen, King, and Ace for each suit.
- Feel free to pick in which order the cards are presented on the list .
- Use your creativity to design the user interface to present each card distinctly within the list.
The app consists of three pages. These can be browsed by swiping the screen or selecting one of the tabs in the top side of the screen.
The first page is an overview of all cards, with images, of a deck of playing cards. A search function has been added, where one or more cards can be searched in several ways. It is a singleline searchbar, that disables the inscreen-keyboard on enter. All the data and images are retrieved from the API and therefor not stored in the app. This opens the door to easily switch from a deck of playing cards, to other items.
The second page is a list of cards. These can be rearranged by pressing down briefly. The idea is that when the app is used for, for example, a Trading Card Game or deckbuilding game, a fixed composition of cards can be stored here.
The last page is an about page. Here you can find information about me and the project.
Retrofit is a popular library for making network requests in Android apps. This is used to retrieve the cards via an API GET request from Deck of Cards API.
A draggable list was created using Compose Reorderable. This is a Jetpack Compose modifier enabling reordering by drag and drop in a LazyList and LazyGrid.
- Remove code from MainActivity without breaking the retrieval of items from the API
- Improve list to make items clickable and show data
- Improve list page with sorting, filter and sets
- Write automated tests
- Implement a second API call: (1) retrieve a deck incl jokers -> (2) pull 54 cards
See the open issues for a full list of proposed features (and known issues).
Ivo Eijgenraam - [email protected]
Project Link: https://github.com/gewooniv/decklist