Android Development - Beginner to Advanced
Introduction
Starting out as an Android developer was quite hard, at the time there wasn't Android studio, it was eclipse that was the go to IDE, and the Android Framework was complicated on its own, coupled with a complicated development process with Eclipse, so I backed out.
Then Android studio came out and I got intrested again in android development, but yet again the learning curve was quite steep, so it took more time than anticipated and it was quite slow.
Writing Android apps now, I figured out that the slowness in my pace was due to the fact that Android has too many moving parts whose purpose need to be understood, and I needed a holistic app that could highlight the core features. Most times, as a beginner, to understand how a component works you have to see where it is being applied.
Objective
The objective of this article is to get you exposed to some of the core pillars of the Android framework by defining a set of challenges targeted to each development stage, from beginner to advanced.
On completing the challenges here, you would be exposed to major advanced concepts of Android development and the processes, tools, and libraries that are used in most advanced android projects.
Before we begin
N.B: You cannot become an expert overnight, or in a week, or a month. It takes time, years even, to become proficient in anything.
So the goal here is not to get you to become an expert, but rather to get you to tackle challenges that would give you the confidence to face even more complex android challenges. The more challenges you overcome, the more confident you are in taking on new ones.
What you will build (Binger)
You can name the app whatever you want, but I would refer to the app as Binger. Binger is an app that lets users view their favorite TV-Shows and new ones, it notifies user's when new episodes, of shows that they are interested in, come out and it also gives the user ability to filter/search for other TV-Shows.
You would be using TMDB's public api, for these challenges, and all you need to do is create an account and get an api-key.
Getting started
You would need a couple of things to get started:
The upcoming features define challenges at different skill levels and at each stage, they signify the things that you would need to do, to complete that specific stage and move to the next. I will be listing out things to look out for while you learn, as well as reading materials that could help and guide you in accomplishing the tasks.
Beginner
Features:
Here is a list of the things you need to complete:
- View Showing TV-Shows (Show a list of all tv shows that are currently airing)
- View TV-Shows Airing Today (Show a list of all TV shows that are airing on the current day i.e. today)
- View Details of a TV-Show (Show details of a selected TV-show)
Notes:
Being above novice or beginner skill level, this might be a breeze, but for an absolute beginner it might not be so straight forward. Here are a couple of things that would be learnt:
- XML layouts
- Activites (& Activity navigation)
- Intent & Bundles
- RecyclerView (very common library)
- Managing Libraries (with gradle)
Materials:
Here are a list of materials that could help you out.
-
XML layouts
-
Activity
-
Intent
-
RecyclerView
-
Retrofit
Intermediate
Features & Tasks:
Here are a list of things you need to complete:
- 'Like' or 'Favorite' a TV-Show (enable users to add to thier favorite list by liking or 'favoriting' a TV-Show)
- Store the list of user's 'favourite' TV-Shows in local db (save liked TV-Show information to phone's local databse)
- View and manage all liked TV-Shows (enable users view a list of thier liked tv-shows and remove one or all in the list)
- View both TV-Shows' lists in the same activity (Using a TabLayout, show both lists of TV-Shows that are Airing Today and Current Airing)
- Search TV-Shows with text and filters (enable users to search for TV-Shows by name and filters like genre, year_produced, returning or finished, etc.)
- Use Data-Binding to setup and update UI components
- Next Episode Notification (notify a user when the next episode of a favorite TV-Show comes out)
Notes
Some of the materials that are being posted hint at solutions but are not arranged in any paticular order, so look at the problem first and think of a way to solve it before looking for a materials that could accomplish that, or you can assess them both at the same time. features to be learnt:
- Tabbed Navigation
- Fragments
- Menu Inflation
- Background Tasks
- Notifications
- Searching
- Databinding
- Persistence with local database
Materials
-
Tab Layout
-
Menus
-
Search
-
Databinding
-
Persistence
-
Notifications
-
Background Tasks
Advanced
Here are a couple of advanced features to add and a few things to change:
- Continuous Integration (Setup continuous integration with app-center)
- Authenticate Users with Firebase (Enable Users signup and login with firebase, using a email and password)
- Watch Trailers (Enable users watch trailers of a selected TV-Show)
- Sync localdb with firebase db (Enable users store thier favorite TV-Shows in firebase database)
- Log app crashes (Add logging for app crashes)
- Dependency Injection (Add dependency injection for app services and view components)
- Reactive Programming with RxJava/LiveData (setup reactive programming with reactive extension)
- Light and Dark theme (setup two themes for the application light and dark)
- Settings (setup a settings view where users can select prefered theme layout: light or dark)
- Test Suite (write test suite for services and ui components)
Notes
This section introduces some advanced topics and it can be a little overwhelming, so take the time with understanding out each part fits in your application and development process, the goal here is to get you researching solutions to complex ideas and tools that are unfamiliar. Here are things to be learnt:
- Continuous Integration
- Authentication
- Android Themes
- Dependency Injection
- Media Streaming
- SharedPreferences
- Firebase Database
- Logging
- Reactive Programming
- Unit Testing
Materials
-
Unit Testing
-
Continuous Integration
-
Dependency Injection
-
Firbase Authentication
-
Firebase Database
-
SharedPreferences
-
Logging
-
Reactive Programming
-
Android Themes
-
Media Streaming
Conclusion
Android development encompasses a lot of things and, depending on requirements, it takes time to get introduced to certain components. With all that is packed into this project, it is still missing certain key components of the Android system, like Content Providers and Broadcast Recievers, I guess that is an adventure I will leave you to take on your own.
On completing this project, you would have touched a lot of advanced topics invovled in Android development. But even at that, the Android framework is constantly evolving, and the process of development is constantly being simplified, with new tools and libraries. So your next challenge is keeping up to date with this constantly evolving entity.
The only way to keep up to date is to be very involved in the Android community, here are some channels and publications that you could subscribe to and get updates on new things happening in the Android ecosystem.
- Youtube: Android Developers
- Podcast: Android Developers Backstage
- Medium: Androidpub
- Medium: Google Developers
- Medium: ProAndroidDev
That is it, and all that is left is your adventure, happy coding.
Yes, it’s useful, https://pakdrive.pk/
I found your article very useful. I am new to android development and ready to learn but have no mentor. Would you agree to be my mentor going forward? If you don’t accept, it’s fine. Just know that I am an Igbo like you. Ndewo!
Great Share!
Versatile Mobitech is a Software Development Company based out of Hyderabad, We have pool of talented IT professionals who are technically sound in latest software development technologies like UX/UI Design, Website / Web Application Development, Mobile Applications Development, Digital Marketing and SEO, IT Consulting and Tech Support.
For more info visit: versatilemobitech.com
nice one http://www.gari.pk/new-cars/