This post may contain affiliate links that earn me a small commission at no additional cost to you. For more information read my Affiliate Disclosure.9 min read
The best way to learn programming is by getting your hands dirty and writing actual code. Reading programming books or watching courses is fine, but they become pretty useless if you don’t practice what you’re learning. If you ever tried to read a book about coding without actually trying it out yourself, you might have experienced situations where a concept totally made sense to you when you first read it, but when you later tried to reproduce it, you completely forgot how the syntax looked or how to even begin. I definitely had situations like this.
That’s not what we want. We want the stuff we are learning to stick, which means we have to write code. Now, you could do the exercises that most programming books contain and that’s probably your best choice if you are just starting out and have zero experience. But once you understand the basic concepts and know how to build a simple layout, it’s much more fun to practice by creating an actual app. Exercises in books are usually dry and boring and can make you think that programming is as much fun as doing math homework. Building little programs on the other hand is exciting and gives you a sense of accomplishment after you’ve done it.
The problem is, a lot of people don’t really know what to build. Others have ideas but start too big and with too advanced concepts, so they don’t finish their project. Again this happened to me. The first app I tried to build was a gamified Pomodoro timer in which I basically wanted to implement a whole role playing game world. And with “I tried to build” I mean that I created 2 screens before I deleted the project. Start small and incrementally increase the difficulty level. Be patient about it and try to learn as much as possible along the way. The good news is, you can actually build really cool stuff without complicated online features, user accounts, servers and stuff like that.
In this blog post we want to take a look at some simple app ideas for beginning Android programmers. Those will be offline apps without any advanced third party libraries. They will help you learn important basic concepts, not avoid them. If you are already an advanced developer, this post is not for you. You should do something more difficult instead.
To most of these app ideas I have Youtube tutorials, where I explain everything step by step. If that’s the case, the title of the paragraph will be a link and you can click on it to get to this particular video or playlist. If you want to make it a bit more challenging, pause the video at difficult spots and try to figure out the next step yourself before I present the solution. Don’t give up too quickly! You will learn much faster by solving problems yourself.
I think there is no developer who didn’t build a Tic Tac Toe game when he first started out. Ok, I guess there are some, but Tic Tac Toe is a really nice project to practice coding in a fun and enjoyable way. That’s because the logic behind it is simple enough that even though it’s challenging at first, pretty much everyone can do it. But you will have to ponder a bit to figure it out. (This does not include creating a computer player/AI, that’s a lot harder).
I have a tutorial on Youtube for a Tic Tac Toe game with a points counter and a reset functionality. There you will also learn how to handle configuration changes, which happen for example when you rotate an Android device. Configuration changes are an important Android concept that you can’t get around if you want to create apps. For that reason it’s good to learn about it as early as possible. Click on the link above to get to the playlist.
A countdown timer and stopwatch are app ideas that you will probably not hear that often, but they are actually pretty cool and fun to build. They are also quite challenging to implement. First of course you have to get the timer running. But then you also have to properly format the time, which is usually given in form of milliseconds. Transforming milliseconds into seconds, minutes and hours without accidentally counting anything twice can easily take a few hours to figure out (if you don’t look at the solution). There are a lot more tricky problems when building such a timer, but it’s also a lot of fun and you actually create something useful that you can put on your own phone.
After you’ve finished the project you could also build some more advanced timers, like a Pomodoro timer, which automatically counts and alternates between different time intervals.
With something as simple as a random number generator you can do some pretty cool stuff, like picking a random color, flipping a coin or throwing a virtual dice. Very useful for people who can’t make decisions. It’s a rather simple project, but you still have to think a little bit and figure out how to handle click events, how to create a switch statement and how to use the random number generator class, which is a bit tricky as well.
Click the link in the title to get to a quick and easy dice roller tutorial. It also contains a link where you can download the necessary images. If you want to make it a bit more challenging, try adding a second dice or implement a points counter.
I don’t have a calculator tutorial yet, because the UI part is a bit tedious for a video tutorial, but nevertheless it’s a great project to train your logical thinking and programming skills. Adding or subtracting two numbers in code is pretty simple, but making the app actually behave like a conventional calculator, that for example adds entered digits to the end of the line, has a character count limit and shows the last result after executing a math operation, is a bit more tricky. But tricky is good, because it means you will learn a lot from it.
If that’s too easy for you, try building a scientific calculator. If it’s too hard, try your hands on a tip calculator first, where you just calculate the percentage on a number input or split a bill up into multiple parts.
Why not build a reminder app that shows you notifications for different events throughout the day? The playlist linked here teaches you how to create notifications on Android and is up to date with the latest changes and requirements, particularly notification channels. Together with the AlarmManager class and some simple input fields you can create an app that sends you notifications on your phone at scheduled times. Maybe build an app that reminds you to brush your teeth 2 times a day or to not forget taking your medication.
An app that can only save and load one single note might be not the most useful tool for your day to day life, but it’s a good way to learn how to write a text file to the internal storage of an Android device. You will use some really raw Java stuff here, like FileInputStream, FileOutputStream and a lot of try/catch blocks. The tutorial will be confusing at first, because it’s pretty low level and not as abstract and easy to use as for example SharedPreferences. But the video takes a little more than 10 minutes, so nothing to be scared of.
If you want to store large amounts of data offline in structured way and retrieve it later, you have to learn how to use databases. A to-do list, grocery list or any kind of list app is a great way to start getting into this topic, because the database structure is usually pretty simple and without any complex relationships. Here we use SQLite, which is built into Android by default, so you can use it right out of the box without adding or preparing anything. If you want to show the database entries in your app, you have to learn about RecyclerView too, because a RecyclerView is necessary to display a large list of data in a memory-efficient way. In the playlist linked here we do exactly that. We build a grocery list app with SQLite and a RecyclerView, where we can add different items with a name and an amount, order these entries by their timestamp and swipe them off the list to permanently delete them from the database.
SQLite is pretty low-level and requires a lot of boilerplate code. It’s very easy to make mistakes because the syntax can be confusing and the compiler won’t show you many warnings for wrong SQLite statements. There is an Android library called “Room” that abstracts a lot of this low-level SQLite stuff and makes it easier to use, but nevertheless I think it’s good to start with raw SQLite as a beginner and then switch to Room when you feel like you understand it.
If you don’t already have enough of SQLite, creating a quiz game is a good way to practice it a bit more. The database schema is slightly more advanced than in the grocery list app and we use some more complicated query methods, but this time at least we don’t need to build a RecyclerView. What we will learn instead are things like how to restore the application state after configuration changes, how to use SharedPreferences to save smaller amounts of unstructured data, how to send variables between different activities (screens) and more.
This tutorial is one of the more popular ones on my channel, probably because it’s a lot of fun. It’s also the toughest one on this list, but we go through it step by step, so everyone can do it, even with very little experience.
Budgeting App / Calorie Counter / Any Tracker
Another simple but useful idea would be an app that keeps track of some metric in your life, like your finances or nutrition. You would have to figure out how to take user input, how to process it and make your calculations on it, how to store the data and then how to display it in a useful way. I don’t have a tutorial on any of those apps specifically, but you can find all the necessary pieces and concepts in my other tutorials. And since you are the developer, you can give your app any functionality you want, display the statistics you need and this way build the perfect tracker for yourself.
Ok, those are my app ideas you can try as a beginner. Don’t forget to follow my Youtube channel for more tutorials in the future.