Best Resources to Learn Android Development with Java and Kotlin

Android is one of the most dominating mobile operating systems in the present market. That is why Android apps have become popular, and app developers think of learning the best technologies for Android app development. As one of the Android app developers, you have a chance of getting jobs.

Tutorials and Courses

Android is an open source platform so it can be used in many different ways without limitations. This makes it ideal for developers who are just starting out, as they can create an app and put it on the marketplace without the need of meeting above assurance criteria. So, it doesn’t matter if you want to learn android development or in a mobile development, here is the top resources to learn Android development online.

Now, you can look for a training program to learn Android development. We have listed some free and paid courses available at different online sites.

  1. Android Developer – This is one of the best sources of information concerning Android development. It has all the documentation you will need, and there’s also a training section which will help you gain knowledge about Android programming and create an app from scratch. Also, there are guides and documentation for distribution and design if you’re interested in those subjects too.
  2. Vogella Android – This site has a massive selection of Android tutorials for free. This site touch on the whole thing from the basic to more advanced topics. Every tutorial is very well written, giving great code examples as well as a link to further resources.
  3. My Life with Android – This website looks like a developer’s diary than a standard Android development tutorial. Managed by Gabor Peller, he details all his experiences with developing an Android app. While it is considered a great source to learn Android development from a firsthand viewpoint, it might contain errors, as its written by someone who’s putting his ideas as he learns Android development. In general, it’s an excellent resource, and you may be able to learn new things by reading somebody else’s experience with developing an Android app.
  4. TechnoTalkative -This site has a collection of tutorials and articles concerning Android app development.  This can be accessed for free, and cover a specific aspect of developing Android app ideal for novice and skilled designers.  The objective of this site is to give in-depth answers to questions on Android development.
  5. Treehouse – This is a subscription-based site with a fantastic collection of lessons and tutorials which will take you in developing Android app online from the basic to the advanced topic. When you subscribe, you will have access to the finest Android app development courses that you can finish at your own pace and leisure.
  6. Mobile Tuts+: A great resource for information and inspiration on developing an Android app for novice and seasons alike, Mobile Tuts+ is part of productive Envato Network, and they offer the best content about mobile development. It doesn’t matter if you are a seasoned developer or a newbie; this site has a wide selection of tutorials to know Android app development for free.
  7. Android Basics: User Interface – This is a semi-free solution for learning Android development. There are many different lessons on varying content and lengths. This course is designed for students who are new to programming, and want to learn how to build Android apps. Some of the lessons cover the basic while some were providing more advanced and specialized subject matter. Many shorter lessons are offered for free, while some needs you to give a considerable amount of money.
  8. Advanced Android App Development by Google – This is also a reliable course provided by Google.  In this course, you will learn how to make your app production-ready by developing a variety of different sample apps, each designed to showcase advanced capabilities of the Android platform, including fragments, widgets, media playback, and testing. You’ll learn how to create UI tests using the Espresso framework, to leverage third-party libraries and services like ExoPlayer and Firebase Cloud Messaging, and use Google APIs to make your app aware of its location
  9. Android Material Design Videos – You will know about Google’s Material Design used for developing Android apps. You can learn how to implementing this design in creating apps for Android Lollipop and other pre-Lollipop versions, including new widgets such as CardView, ToolBar, and RecyclerView.
  10. Developer.android.com – It is official source for free tutorials with a guide on UI structure and Andorid APIs. It has 2 sections: Codelabs and Courses. Most codelabs step you through the process of building a small app, or adding a new feature to an existing app while Courses focus on training paths that teach you how to build Android apps.
  11. Google: Associate Android Developer (AAD) – At this website, you can find a premium certification course to become an Android developer. However, you must know about Java to choose this course. The curriculum of this course includes instructions on Android Studio, app testing, Android tools, Gradle, and more.
  12. The Complete Android N Developer Course – You will know about Android Studio and a range of Android features. The tutorial enables you to create Android Oreo apps and clone other apps (Instagram and Uber). Without any programming knowledge, you can join the Android N Developer course.
  13. Android Basics: User Interface – Android app interface design is highly important to developers, and this free tutorial helps you to learn the way of creating the best UI. The beginner-level course covers two weeks, and you will learn lots of things. The self-paced learning is one of the advantageous features of this online course at Udacity.
  14. ConstraintLayout.com – This is a community-sourced documentation hub all about ConstraintLayout. It teaches a lot of basic stuff and some tips to implement this layout.
  15. Basic Android Weather App – Make an Android app that read weather information from OpenWeather using Retrofit.
  16. Calculator App – A simple calculator with number pad and 4 Math operator with a display screne. In this tutorial, you will learn how to use ConstraintLayout for a complicated layout.
  17. Using RxJava 2 – Reactive programming is an important part of making an Android app nowadays. Learn how to use RxJava 2 in your app!
  18. Android MVP Introduction – 2 chapters introduce about Model, view, and presenter which is an Android architecture that provides code reusability and testability.

Languages and Platforms

For games:

Android IDEs

What IDE to use depends on what programming language you use to make an Android app.

For native, I recommend only Android Studio.

Best Android Libraries

  1. RxJava – It is a library for composing asynchronous and event-based programs using observable sequences for the Java VM. It becomes the standard for making an Android app.
  2. Dagger 2 – Dagger is a compile-time framework for dependency injection. It uses no reflection or runtime bytecode generation, does all its analysis at compile-time, and generates plain Java source code.
  3. Retrofit – Retrofit is a type-safe HTTP client for Android and Java. Networking is one of the most important parts of Android applications and Retrofit will make handling network request easier.
  4. Store – Store is a Kotlin library for loading data from remote and local sources. A Store is a class that simplifies fetching, sharing, storage, and retrieval of data in your application. 
  5. Coil – An image loading library for Android backed by Kotlin Coroutines.
  6. Picasso – Images add much-needed context and visual flair to Android applications. Picasso allows for hassle-free image loading in your application—often in one line of code!
  7. FastAdapter – The FastAdapter is here to simplify creating adapters for RecyclerViews. Don’t worry about the adapter anymore. Just write the logic for how your view/item should look like, and you are done. It supports many common use case of recyclerview, including drag-n-drop, header & footer, checkbox/radio, endless scroll, swipe to remove, and many more.
  8. AChartEngine – AChartEngine is a charting library for Android applications. It currently supports the following chart types: line chart, area chart, scatter chart, time chart, bar chart, pie chart, bubble chart, doughnut chart, range (high-low) bar chart, dial chart / gauge, combined (any combination of line, cubic line, scatter, bar, range bar, bubble) chart, cubic line chart.
  9. EazeGraph – EazeGraph is an Android library for creating beautiful and fancy charts. Its main goal was to create a lighweight library which is easy to use and highly customizeable with an “up-to-date”-look.
  10. AppCrossPromoter – An android library to cross-promote your apps and manage direct-sold campaigns (free, open source, third party).
  11. Toasty – Make toast more tasty and beautiful.
  12. Lottie – Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with Bodymovin and renders them natively on mobile!
  13. timber – A logger with a small, extensible API which provides utility on top of Android’s normal Log class.
  14. LeakCanary – LeakCanary is a memory leak detection library for Android.
  15. greenDAO – greenDAO is an open source Android ORM making development for SQLite databases fun again. It relieves developers from dealing with low-level database requirements while saving development time. 
  16. PhotoEditor – A Photo Editor library with simple, easy support for image editing using Paints, Text, Filters, Emoji and Sticker like stories.
  17. CalendarView – A highly customizable calendar library for Android, powered by RecyclerView.
  18. Bubble Navigation – A light-weight library to easily make beautiful Navigation Bar with lots of customization options. It supports TransitionDrawable for cool state changes.
  19. Balloon – A lightweight popup like tooltips, fully customizable with arrow and animations.
  20. Croppy – A image cropping library for Android which supports focus, zoom features.
  21. Broccoli – It shows the placeholder of view when you are loading something…
  22. Contour – Contour is a typesafe, Kotlin-first API for complex layouts on Android. The library aims to be the thinnest possible wrapper around Android’s layout APIs. It allows you to build compound views in pure Kotlin without using opaque layout rules.
  23. Orbit MVI – Orbit is a MVI framework for Android and Kotlin, which provides the minimum structure possible around your redux implementation to make it easy to use, yet leave you open to use RxJava’s power.
  24. Cyanea – This library is a powerful, dynamic, and fun theme engine. it is named after Octopus Cyanea which is adept at camouflage and not only can change color frequently, but also can change the patterns on and texture of its skin.

Useful Tools

  • Android Asset Studio – A collection of tools to generate icons for Android, including launcher, shape shifter, 9-patch generator, action bar icon generator.
  • Repix.app – Create screenshots for apps.
  • Previewed.app – Create intro videos, screenshots for apps.
  • App cost calculator – This is an online tool developed by Digitalya that can help you get a rough estimate of how much your app will cost. It provides you with a full breakdown of future development costs so that you can make informed decisions.

Blog Posts

Android Studio is Android's official IDE. It is the best editor when it comes to writing and building Android apps. Tips These tips will improve your overall efficiency and performance. Popular shortcuts ShortcutDescriptionctrl + nSearch and open a classctrl +...

It is kind of hard to implement animations in native Android with either Kotlin or Java. These animation libraries for Android will help you make this task more comfortable. Lottie Lottie can render After Effects animations natively on Android and...
Using an Android ORM library can help you save lots of time working on an app with lots of database activities and focus on logic part of the app. Room The Room persistence library provides an abstraction layer over SQLite....

Posting project to GitHub as a repository is quite easy in Android Studio. Requirements: GitHub account.Download Git and install from https://git-scm.com/downloads.Android Studio. Connect GitHub to Android Studio: Go to File -> Settings -> Version Control -> Git, while a project...
A Fragment represents a behavior or a portion of user interface in a FragmentActivity. Open a fragment from another fragment activity!!.supportFragmentManager.beginTransaction() .replace(R.id.container, ProductFragment()) .commitNow() If doing it in an Activity, just remove the activity!! part. Passing an object to a...
There are many ways to pass an object to a fragment. Serializable class is often used. In this post, I want to show you my way to carry out this task. My method is just simply converting an object to...
In its most basic form, the action bar displays the title for the activity on one side and an overflow menu on the other. Even in this simple form, the app bar provides useful information to the users, and helps to give...
When your app consists of many modules and each module contains several fragments, you will need to hide or show menu items depending on the showing fragments. Layout Each module's menu items should be put in a group for easy...
AutoCompleteTextView is an editable text view that shows completion suggestions automatically while the user is typing. The list of suggestions is displayed in a drop down menu from which the user can choose an item to replace the content of...
There are 2 ways to add zeroes to a number in Kotlin. String.format() This method returns a string obtained by substituting the specified arguments, using the default locale. val monthOfYear = 2 val numberWithLeadingZero = String.format("%02d", monthOfYear) println(numberWithLeadingZero) // "02"...
DatePicker and DatePickerDialog are often used when requesting user to select date instead of typing in Show DatePickerDialog in fragment This will display a DatePickerDialog for user to choose date then output the result to textview. val c = Calendar.getInstance()...
EditText is used to take in Android user's input. Showing error such as mis-matched password, wrong username is a must-have feature in this progress. This is how to show error on the tip of an EditText. <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout...
Kotlin provides some ways to get current index of any for each loops. forEachIndexed performs the given action on each element, providing sequential index with the element. list.forEachIndexed { index, element -> Log.e("VALUE_OF_$index", element.toString()) } indices returns the range of valid indices...
"Reached End of File While Parsing" is a common mistake when writing application using Java. It happens if a closing curly bracket for a block of code such as class and method is missing. It also happens when an IDE...
There are many game engines dedicated to Android game development in the past few years. Below are the most popular Android game engines which are used in may famous games on Play Store. Best Android Game Engines Unity3D Unity3D is...
By default, Android framework already supports camera features which allow developers to add pictures and videos capture in their applications. These following libraries will add more features to Camera API. CameraX Developing camera app until now has been quite painful. CameraX is an Android Jetpack...
When you try connecting to a server via HTTP, the Android Studio shows an exception. Cannot send data to the server java.net.UnknownServiceException: CLEARTEXT communication to [HOST] not permitted by network security policy The connection works fine on Android 7 and...
Retrofit 1 has a built-in log feature for debugging request and response. However, this feature was removed in Retrofit 2. Based on community's request, the developers of OkHttp made a logging interceptor. OkHttp Logging Interceptor is an OkHttp interceptor which...
If you have a website, you will want to check and see which elements take the longest period of time to load. By testing, you can determine how to speed it up. But, your internet connection is usually too fast...
When your app requires lots of database activities, using an ORM is the best way to reduce your workload so you can focus on other aspect of the app. I hope you can choose a suitable Android ORM after reading...
ViewPager allows user to swipe left and right through pages of data. This post will introduce 6 Android ViewPager libraries which bring better features and enhancements to the original widget. UltraViewPager UltraViewPager is a ViewPager extension that encapsulates multiple features,...
JSON is always a hot topic in both web and mobile development. There are lots of good libraries to handle JSON for Android. And it is not hard to choose one. You can use the one that is the most...
Clean architecture is what developers strike for in any platform development. In recent years, there are many attempts to make clean architecture in Android a thing for reusable code and easy test-ability. That's a good sign for Android development community...
Following libraries with help you create apps which are related to sound and music, be it music player or sound recording apps. Noise Noise is an Android wrapper for Kiss FFT, a small mixed radix FFT library that can use...
Service is commonly used for background tasks such as sending a request to an API and downloading file. Service runs only once. To make it run periodically, AlarmManager and JobScheduler are used. Both can be used to initiate a long-running operation outside the lifetime of...
Kotlin has been gaining momentum in becoming a main language to develop Android app. Kotlin already works well with third party libraries which are developed in Java. This post will focus on the best libraries written for Kotlin. Kodein Kodein...
Many developers doesn't know about existing plugins for Android Studio which can help reduce worktime by a large margin. This post will introduce the best plugins for Android Studio, which can be used for all projects. Exynap Exynap helps developer to find...
Android Studio is the official IDE provided by Google. It is the most used IDE to develop native app. Android Studio is based on IntelliJ and requires developer to write app in Java language. But Android Studio is not the...
DBFlow is simple and powerful Android ORM database library with annotation processing. Install and configure Add classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’ to dependencies of buildscript and maven { url “https://jitpack.io” } to reposities of allscripts in your root’s gradle.build. Here is how it looks...
Remembering and using shortcuts frequently will reduce your work time a lot, esp. for repetitive tasks. Following are the most useful shortcuts/hotkeys in Android Studio: Editor Alt + Left / Right: Switch to previous / next tab Ctrl + Alt + Left /...
By default, when you highlight a word or a phrase then press quote, the highlighted words are replaced by quotes. That’s how Android Studio works. There are 2 solutions to insert quotes or braces. Live template Surround live template can...
Many new developers will find it hard to rename a package. By default, package names are compacted in Android Studio, and that’s the reason why many can’t find a way to rename it. Step to refactor package renaming 1) Disable...
TextView and Button are the most commonly used View. We can add some effects to these 2 views to make them more useful in different cases. Strike Through This effect is added in code. [java] //use Paint TextView textView = (TextView) findViewById(R.id.textView); textView.setPaintFlags(textView.getPaintFlags()...
OpenCV is the most common used solution when it comes to detecting faces, identify objects, classifying human actions in videos, tracking camera and objects movements, extracting 3D models of objects, creating panorama and 360-degree photos, finding similar images, removing red eyes,...
Mobile's technology has come a long way and now can be compared to PC in many fields. However, development on a mobile device is not among those fields. There hasn't been a good alternative to Android Studio for making developing task...
Navigation Drawer is the standard menu navigation in materialize design, which is commonly used in many popular apps. It is a panel that displays an app's main navigation menu on the left edge of the screen. It is hidden most...
There are many ways to store data in Android. These libraries will help working with each of these types faster and more efficient. SQLite ORM. ORM library is the easiest way to handle SQLite. sqldelight. SQLDelight generates Java models from your SQL statements and helps manage...

AsyncTask is a sought after solution when it comes to working with network connection. However, it has lots of disadvantages and lacks of features to make network requests more efficiently. Fortunately, there are a lot of Android network libraries which...

It must be boring to see the same effects and no animations on all apps' widgets. These libraries will apply different types of effects to Android widgets. Lottie for Android. Lottie is an animation library for Android. It can parse Adobe After...
OrmLite for Android is an object relational mapping framework which can make it easier to work with SQLite on Android. I suggest using this ORM library only if you are familiar with OrmLite for Java. Installation & Configuration Add the...
Sugar ORM is a database persistence library that provides a clear and simple APIs for SQLite database operations. Sugar ORM is simple and easy to setup compared to other Android ORM libraries like ActiveAndroid or DBFlow. The below guide works...
Taking a look at these free & open source Android games if you need to find an idea to make your first game. There are many open source games out there but I will only list those that I find...

There are many online tools which can quickly generate icons & styles for your app. Following are the most useful ones: Device Art Generator This tool, developed by Google, enables you to quickly wrap app screenshots in device artwork. This...
ActiveAndroid is a simple-to-use Object Relational Mapper library, which maps java classes to database tables and java class member variables to the table columns. Each row in a table will become an object. This will help developer create, update, delete...
If you have only one app, signing with one or different key makes no differences. However, your app library will increase over the years. From the 2nd app, most developers will start thinking about this issue. Depend on what you...
ListView used to be core element of many apps. RecyclerView widget is a more advanced and flexible version of ListView. After RecyclerView was announced, it quickly replaced ListView. Furthermore, there are more RecyclerView libraries which will help improve your app's...
To a developer, there are many opportunities for making an Android RSS app. You can build an app to read latest news in a niche or make an app to read latest content for a client's blog. Below are some tutorials about developing...
Below are some libraries which can help display and cache image in Android. Each one has its own pros and cons so pick one carefully based on how complicated your project is. Picasso Picasso is a simple yet powerful image...
android.widget.ImageView is the main class to handle image files. ImageView loads, optimizes and displays image. Android devices come in different screens and dpi, which make it easy to implement but hard to master image in Android. To make it simple, I...
People always think making Android games is hard. I think the same, too. Developing a game takes a long time, from learning to code to making game assets. That's why many developers, including me want to find an easy solution...
Android provides many ways to store data. However, SQLite database is most commonly used in apps which require large data storage. SQLite is a built-in relational database in Android. It is managed by classes in android.database.sqlite package. This package includes...
Starting or default activity activity of an app can be configured using intent-filter tag in AndroidManifest.xml. A simple case you need to do this is when the app contains a splash screen which is required to be displayed first when...
Google has made it much more easier for developer to create an app with Navigation Drawer since Google's I/O in 2015. In this tutorial, I will introduce how to switch among fragments when an item on navigation drawer is clicked....
Splash Screen is displayed for like a second or two then gets redirected to main default activity after an app is first opened. It is often used to display an app or company's logo. Since Android Studio hasn't had this feature built-in,...
Picasso is an image library for Android. It simplifies the process of displaying images from internal storage or from an external URL. When it comes to processing images in an app, Picasso is always my choice. Loading an image is...
Developing a chat or message app requires lots of skills, including server's back-end service creation skill and Android development skill. It is better for a developer to let a 3rd-party handle server logic and scalability to focus on Android development...
Even though both Dalvik and ART optimizes RAM usage with garbage collection (GC), it doesn't mean a developer can do whatever they want without checking how an app allocates and releases RAM. How to trigger memory leaks Developers need to...

Creating chart has never been a fun task to do. These libraries will help developer avoid this horrendous task. AChartEngine AChartEngine is a charting library for Android app development which supports a large ranges of chart types, from simple ones...
When it comes to debugging in Android, developers all think of Android Debug Bridge (adb) which is a versatile command line tool which allows developer to communicate with an emulator instance or connected Android-powered device. There are many external libraries...
There are several standard libraries for processing XML files using Java language. The SAX and the DOM XML parsers are also available on Android which are also similar to ones used in Java. XmlPullParser XML Pull Parser is an interface...

Leave a Comment

Your email address will not be published. Required fields are marked *

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close