Both free and paid
I recently released a book aimed squarely at people that wanted to get started with Android development.
After releasing it, I visited r/learnprogramming to give away five copies of the book and soon had people thanking me for the book but also bemoaning the (supposed) lack of good resources for beginners on the web.
I couldn’t disagree more: I think that’s there’s a boatload of awesome resources on the web aimed at Android beginners (both free and paid), so I went ahead and promised to make a list of my favorite resources.
Here we go!
Before you go ahead and try to learn the Android SDK, it helps to have a good knowledge of the Java programming language. If you go on YouTube and search for “Java for beginners”, you’ll get a ton of results.
Filtering through those can be a chore, so let me help you with that: the ones you want to watch are
- Derek Banas’s Java Programming (AKA Learn Java in 30 minutes, which is a tall order)
- John Purcell’s (AKA caveofprogramming) Java for Complete Beginners
Now, I’m not suggesting that you should watch both, although go ahead and do if you want. It can’t hurt, unless you are being chased by a xenomorph while you’re watching. In that case, it’ll definitely hurt.
Watch Derek Banas’s 30-minute video if you already have some experience in other programming languages. The video is meant for people that already have some experience with conditional statements, loops etc. in other languages.
If you have never done any programming before, watch John Purcell’s series of videos. It’ll explain everything in great detail.
Finally, there’s a great Java guide over at WikiBooks that I couldn’t recommend more.
Now, you don’t need to learn everything about Java to be able to create Android apps. I suggest that you focus on the following subjects
- Basic syntax
- Flow control (conditional statements, for- and while-loops)
- The basics of Object Oriented Programming (classes, objects, methods, inheritance and polymorphism)
- The Java type system
- Generics! Generics! Generics! And the Java Collection Framework. Lists, Sets and Maps need to be your friends. So many apps work by presenting sets of data to the user that you’ll be using Collections very often
- Exceptions and try/catch blocks
- The basics of Threads and Runnables
These should have you covered.
I'm an Android developer and designer with a love for beautiful UIs!www.buymeacoffee.com
Learning Java is only the first step in creating Android apps. You then have to get familiar with the Android SDK (Software Development Kit).
When developing Android apps, you’ll be mainly using Java and XML. I say mainly because the Gradle build system uses Groovy, the NDK (Native Development Kit) uses C/C++ and AIDL (Android Interface Definition Language) uses… something.
The thing is, you won’t have any use for the NDK or the AIDL when you’re a beginner (or ever) and knowledge of Groovy is not necessary since what you’ll be doing with Gradle is mostly copying & pasting lines of code in a file called build.gradle.
XML (Extensible Markup Language) is a markup language. This means that it is meant to describe things, not define how they work. If you’ve ever done any web programming (even basic stuff), you must have used HTML. In HTML, when you want to display a paragraph on screen, you use a paragraph element, like this
<p>This is a paragraph</p>
XML is a lot like HTML in that it’s what you’ll be using to create your user interface: you’ll be using it to place various elements, like TextViews, ImageViews and EditTexts on screen.
XML is a huge subject and you’ll find lots of info about it on the web, including the aforementioned WikiBooks site. However, you will only need a small subset of XML to work on Android apps.
For an adequate introduction to XML in Android, my book Android Development for Gifted Primates should suffice.
I know, I know: “that was the most shameless plug I’ve ever seen. I’m leaving this shitshow!”. But wait — what if I told you that you can get a big chunk of the book mailed to you for free by entering your e-mail address below? This free sample contains a lot of info about XML usage, and it’s specific to Android development. You’re welcome.
There a couple of really good free Android tutorials on YouTube. Again, if you go looking by simply doing a search, you’ll be bombarded with choices, so allow me to suggest a couple of great ones
- The New Boston: this is amazing. Very informative, fun and clearly-explained
- slidenerd: another hero of mine. A huge playlist of tutorials, aimed at beginners. You may have some trouble with the accent at first but you’ll get used to it after a while. The best I can describe the accent is “Arnold Schwarzenegger if he was Indian. And tech-badass, if that was a thing”.
You can also put that Udacity account (you have hopefully created by now) to good use by checking out their Android Development for Beginners course and their Android Basics series, which include
Finally, John Purcell (what a guy!) has a free Android course for beginners on his site caveofprogramming.com but you’ll have to create an account to watch it. Small price to pay for the sheer awesomeness on display.
I won’t be suggesting any paid Java resources since the free stuff should have you covered. However, if you want to learn more about Java, Joshua Bloch’s Effective Java 2nd Edition is indispensible.
Also, if you want to get into good habits early on, Head-First Design Patterns will teach you some very useful idioms usually used in Java programming.
There’s two places that you can find great content at great prices: Udemy and Team Treehouse.
Let’s start with Team Treehouse: you’ll have to pay a monthly subscription of $25 for the basic plan (which includes a lot) but it’s definitely worth it.
A great feature on Team Treehouse is Tracks: There is a Beginner and an Intermediate track that will guide you through the process of learning Android development by suggesting a set order in which to take the various sub-tutorials on the site. Think of them as a set menu in a restaurant, only Less Delicious But More Nutricious™. I missed my calling as a marketer.
Another perk! If you create an account at TeamTreehouse, you’ll also have access to their Java tutorials!
Similarly to YouTube, if you go at Udemy and search for “android development”, you’ll get so many suggestions you won’t know where to start. So, in true “I’m awesome” fashion, here are my suggestions
- Tim Buchalka’s Master Android N App Development With Java
- Matthew Penning’s Android Development With Java Essentials
A tip: some courses on Udemy cost quite a bit but there are very frequent discounts on the site. You can also install a Chrome extension called Honey, which will apply coupon codes automatically to give you the biggest discount available at the time.
I was bummed out to find out that LearnByTheByte’s awesome four-part tutorial on Android development was pulled from Udemy (and their own site) because that one was fantastic. At least I managed to track this down on YouTube , which is something I guess (part I of their tutorials).
Finally, I’d like to suggest some Android development books that won’t confuse beginners
- Barry Burd’s Android Application Development All-in-One For Dummies. Barry has a friendly, approachable writing style that I enjoyed immensely.
- Big Nerd Ranch’s Android Programming is a very cool guide, that is easy to read but goes into considerable depth later in the book
Later on, you might like to check out The Busy Coder’s Guide to Android Development, which is huge and exhaustive and something that I think any serious Android developer should have in their arsenal.
Android User Interface Design by Ian Clifton is another book you should take a look at later on. Another favorite of mine is Android Programming: Pushing the Limits but, again, bookmark it and check it out once you’ve created a couple of apps first.
And that’s it! Comment below if you need to ask me anything. Thanks for reading.