Take your Android coding skills to the next level in our free, self-paced Advanced Android Development training. 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. The course materials include:
- Course codelabs
- A concept reference
- Slide decks (optional, for classroom use)
- Source code in GitHub for apps that you create in the codelabs
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 free and available online for self-study by experienced developers.
Advanced Android Development is a companion course to Android Developer Fundamentals, which prepares you to take the exam for the Associate Android Developer certification.
What does the course cover?
Advanced Android Development includes five units:
- Unit 1: Expand the user experience
- Unit 2: Make your apps fast and small
- Unit 3: Make your apps accessible
- Unit 4: Add geo features to your apps
- Unit 5: Advanced graphics and views
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.