Advanced Android Development

Take your Android coding skills to the next level in our self-paced Advanced Android Development training, which is available at no charge. The course uses the Java programming language and teaches you ways to expand the user experience, improve app performance, and add features like custom views, animations, and location-awareness.

Each lesson includes a tutorial with solution code in GitHub, concept documentation, and a slide deck.

About the course

The Advanced Android Development course was created by the Google Developers Training team.

Each lesson contains one or more codelabs with hands-on coding exercises, plus a slide deck and a concepts chapter. As you work through the codelab, you create apps to practice and perfect the skills you're learning.

The materials are available online, at no charge, for self-study by experienced developers.

What does the course cover?

Advanced Android Development includes five units:

Unit 1: Expand the user experience

This unit covers how to extend your apps to improve the user experience. Learn how to use fragments, widgets, and sensors.

Each lesson in Unit 1 is independent of the other lessons in this unit. For example, you can do the sensors lesson without completing the fragments and widgets lessons.

Lesson 1: Fragments

This lesson explains when, why, and how to use fragments. You learn how to include a fragment in your activity's UI, either by including it statically or dynamically. You also learn how an activity communicates with fragments. You implement a typical scenario for fragments by building an app that has a master/detail layout.

Lesson 2: App widgets

Learn about app widgets, which are miniature app views that appear on the Android home screen. Discover how to add widgets to your project, handle update requests, and make widgets interactive.

Lesson 3: Sensors

Learn how to use the Android sensor framework to get data from device sensors such as the accelerometer and geomagnetic field sensor. Build an app that responds to tilting the device.

Unit 2: Make your apps fast and small

This unit covers how to use tools to identify performance issues in your apps so you can make your apps run faster and more efficiently.

Lesson 4: Performance

This lesson explains why the performance of your Android app matters, and describes ways to optimize your app's performance.

You learn how to measure and improve rendering and memory performance, and you learn best practices for network calls, battery use, and data compression. You use the Android Profiler tools that come with Android Studio, plus command-line tools and tools on the device.

Unit 3: Make your apps accessible

This unit discusses how to localize your apps to other languages and how to make your apps accessible to users with disabilities.

Lesson 5: Localization

Learn how to provide support for different languages using string resources and the Translations Editor in Android Studio. You also learn how to show dates, times, numbers, currencies, and other information in formats for the user's chosen locale.

Lesson 6: Accessibility

Learn how to make your apps accessible to everyone, including people with disabilities. You explore the various accessibility options available in the Android platform and learn ways to modify an app to make it more accessible.

Unit 4: Add geo features to your apps

This unit discusses how to extend your apps to add location functionality. It covers detecting and using the device location, using the Places API, and generating and showing maps.

Lesson 7: Location

Learn how to use Location Services APIs to get information about device location, receive periodic location updates, and turn geographic coordinates into physical addresses.

Lesson 8: Places

Learn how to detect the user's current place, such as a library, school, or train station, and how to enable your apps to search for places.

Lesson 9: Mapping

Learn how to integrate Google Maps into your apps and use features like location markers, map styling, Street View, and location tracking.

Unit 5: Advanced graphics and views

This unit covers how to create advanced graphics and custom views.

Lesson 10: Custom views

This lesson shows how to create a custom view that extends or replaces the functionality of views such as buttons and text fields. The custom view inherits the look and behavior of the parent view, and you can override the behavior or appearance attributes that you want to change.

Lesson 11: Canvas

Learn how to draw on a Canvas object, override the onDraw() method, and use clipping techniques to optimize drawing. In this lesson you create an app that uses a SurfaceView object to draw from a separate thread.

Lesson 12: Animations

This lesson explains how to create various types of animations in Android. You learn how to use property animations, group animations into sets, use interpolators, and experiment with physics-based animations.

Lesson 13: Playing video

This lesson teaches you how to play video in your app, show and use video controllers, and play media files that are embedded in your app or streamed from the internet.


The Advanced Android Development course is intended for experienced developers who have Java programming experience and know the fundamentals of how to build an Android app using the Java language. This course assumes you have mastered the topics in Units 1 to 4 of the Android Developer Fundamentals course.

Specifically, this course assumes you know how to:

  • Install and use Android Studio.
  • Run apps from Android Studio on both a device and an emulator.
  • Create and use activities in Android.
  • Use views to create your app's user interface.
  • Enable user interaction through click handlers.
  • Create layouts using the Android Studio layout editor.
  • Create and use RecyclerViews.
  • Run tasks in the background.
  • Save data in Android shared preferences.
  • Save data in a local SQL database.