The most comprehensive course for learning Jetpack Compose

Build 12 independent projects, interacting with a vast range of essential Compose APIs

Buy Now Free Preview

870 copies sold ($73,619)

Built using Jetpack Compose 1.6.7

Course last updated: 04/10/2024

Trusted by
What you'll learn

πŸ—οΈ

Build UI

Learn how to build User Interfaces for a collection of common UI patterns. The 12 projects cover everything you'll need to building beautiful UIs in your own work.

βš™οΈ

Manage State

Learn how to work with composable state to keep your UI fresh with any data changes. All 12 projects read and write state based on user interaction, covering a good ground of state management concepts.

πŸ§ͺ

Test UI

Once you can build UI, writing automated tests for your UI means that you'll be able to automatically catch any UI regressions. Across the 12 projects you'll learn exactly how to do this.

Stories Editor

We see Stories features in many apps, so let's build an editor for ourselves! For this project we'll build an editor that allow us to not only draw text and paint on top of an image, but move and scale those elements also!

πŸ–ΌοΈ Canvas

Use a range of layout APIs and techniques to layout the different composables for the stories editor

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the stories editor

🎨 Material

Utilise material components to implement the various UI components such as the Slider, Buttons, Bottom Sheet and more

✨ Animation

Learn how we can use animations to create more delight when performing interactions with the stories editor UI

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the stories editor components are accessible to all users

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the stories editor

πŸ‘‡ Gestures

Learn how to handle touch input from the user to move, scale and draw items on a canvas

Graphs & Charts

Mixing canvas drawing and animations in compose can result in some pretty interesting projects. In this chapter we build a collection of graphs and charts, animating the display of their values using the compose animation APIs.

πŸ–ΌοΈ Canvas

Learn how to draw custom compoents using the Canvas composable, giving us lower-level control over our UI

🧱 Layout

Utilise material components to implement UI components for the Graphs and Charts UI, such as Rows and Columns

✨ Animation

Using animations, learn how to add visual delight as values are drawn on the graph when loading and switching between graph types

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the graphs dashboard

Calendar

While not every application utilises a Calendar, it provides a range of interesting problems to solve. In this chapter we explore building daily, weekly and monthly calendar composable that can display a collection of events for those formats.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for calendar - such as the View Pager

🎨 Material

Utilise material components to implement the various components of the Calendar

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the calendar components are accessible to all users

πŸ› οΈ Custom Composables

Learn how to utilise lower level APIs to draw composables from scratch, utilising composable measurement APIs

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the calendar

Email Inbox

Feeds allow apps to display streams of content to users, and in this chapter we take a look at building one for ourselves. This involves building a minimal list of content using various material composables, allow us to serve a stream of content to users.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the email inbox

🎨 Material

Use material components to implement the various inbox UI components, such as Swipe to Delete

✨ Animation

Use animations to create visual delight when the email box is interacted with and items are removed from the inbox

πŸ§‘ Accessibility

Using accessiblity APIs, we'll learn how to create action menus for the email inbox to ensure our UI is accessible to all users

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the email inbox

Music Dashboard

A single content feed will not be enough for all applications. Apps like the Google Play Store & Spotify display a range of browseable content in a variety of formats. In this chapter we cover building a complex content feed that contains multiple types of feeds (lists, carousels, chips) in a single content area.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the music dashboard

🎨 Material

Utilise material components to implement the music dashboard items, including the Backdrop Scaffold and Bottom Sheet composables

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the music dashboard components are accessible to all users

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the music dashboard

Messenger

Messaging is a common use case that many mobile users are familiar with. In this chapter we explore recreating the sending and receiving of messages using composable UI.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the messaging feature such as the Lazy Column

🎨 Material

Utilise material components to implement the messaging items, including the Text Input fields and Pop Up alerts

✨ Animation

Utilise material components to create visual delight when there are changes to the UI components within our messaging feature

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the messaging feature components are accessible to all users

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the messaging feature

Home Dashboard

Many apps have some form of Home screen that is used to navigate around different sections of the app. In this chapter we take a look into the Scaffold composable, along with its contained Drawer section, to build a home screen for an app that can adapt to larger screen devices.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the home dashboard

🎨 Material

Utilise material components to implement the dashboard items, including the Scaffold, Navigation Drawer and Bottom Navigation Bar

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the dashboard components are accessible to all users

πŸ—ΊοΈ Navigation

Utilise the navigation component APIs to supoprt navigation to other parts of the app via the navigation bar and drawer

πŸ–₯️ Adaptive Layouts

Learn how to configure layouts for different screen sizes and orientations, usign the Rail Navigation Bar when in landscape mode

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the home dashboard

Video Player

Media is a big part of many applications. In this chapter we explore how we can utilise Exoplayer to build a Video PLayer for Jetpack Compose, utilising interopability features in the process.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the video player

✨ Animation

Utilise animations to control the visibility of components as the video player transitions between different states

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the video player components are accessible to all users

πŸ§‘β€πŸ’» Interpoability

The video feature uses ExoPlayer, so we'll learn interop APIs that allow us to use existing Android Views within Compose UI

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the video player

Gallery Picker

Image Pickers are quite common in different applications, but before we can display those images for picking from a users device we need permissions to do so. In this chapter we'll explore how to slot the Android permission APIs in alongside compose, allowing us to create an image picker for selecting media items.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the gallery picker

🎨 Material

Utilise material components to implement the gallery picker UI

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the gallery picker are accessible to all users

πŸ§ͺ Permissions

Learn how to handle and request permissions when it comes to accessing device media using Jetpack Compose

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the gallery picker

Blog Feed

In some scenarios we might need greater flexibility in the the composable layouts that we're creating and for these situations, the Constraint Layout can be a great tool. In this project we'll build a basic bloc feed, using the constraint layout to compose our UI elements.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the blog feed, specifically the Constraint and Motion Layout composables

🎨 Material

Utilise material components to implement the blog feed items, including the Card and Button composables

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the blog feed components are accessible to all users

⛓️ Constraint Layout

Learn how to utilise the Constraint Layout to handle complex composable layouts, along with the MotionLayout to animate between layout scenes

Authentication

Sign-up and Sign-in screens are in almost every application, so in this chapter we recreate this experience using composables. This also gives the oppourtunity to introduce the concepts of state management for Jetpack Compose.

🧱 Layout

Use a range of layout APIs and techniques to layout the different composables for the authentication screen

🎨 Material

Utilise material components to implement the settings items, such as Buttons and Input Fields

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the authentication components are accessible to all users

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the authentication screen

Settings

Using a collection of material composables, in this chapter we explore the foundations of building composable UI. We'll be building a settings screen that supports a variety of different interactable application settings

🧱 Layout

Use a range of layout APIs to layout the different composables that make up the settings screen

🎨 Material

Utilise material components to implement the settings items, such as Switches and Checkboxes

πŸ§‘ Accessibility

Utilise accessiblity APIs to ensure that the settings components are accessible to all users

πŸ§ͺ Testing

Learn how to write automated tests for the composables that make up the settings screen


API Coverage

πŸ—οΈ

UI Composition

So that you can utilise composables, you'll need to learn the foundations of composing UI. Throughout the projects we'll introduce you to and guide you through UI composition, so you'll be confident in building your on compose apps from start to finish!

🧱

Layout

When it comes to laying our our composables, there are many different pieces of the layout APIs that provide support for this. Throughout the projects we build, we'll be covering all of the different parts of the layout APIs, so that you can learn how these can be used in to build Android layouts.

πŸ§‘β€πŸŽ¨

Material Design

Material Design plays a crucial part in the look and feel of Android Apps. We'll be using the Compose Material Components package throughout the projects, thoroughly using most of the components that it has to offer!

πŸ›οΈ

Architecture

The way in which we build apps is largely affected by the use of Jetpack Compose, and there are ways which can make working with Jetpack Compose much smoother! Throughout the projects we'll pay close attention to how we are architecting each features to learn how Jetpack Compose fits into Android projects.

πŸ‘±

Accessibility

So that you can sure your UI is accessible for your users, throughout the projects we will cover the different approaches we take to apply accessibility concepts to our composables.

🎨

Theming

Theming allows you to declare a foundation set of properties that be applied to composabes throughout your project. We'll show you how you can do this within Jetpack Compose.

✨

Animation

Animations can help to engage and delight your users. You'll learn how to create animations using Jetpack Compose during the project development!

πŸ’‰

Dependency Injection

Using Dependency Injection is a common use case in many projects, and things can look a little different with compose. We'll cover how you can use Hilt with Jetpack Compose and View Models.

πŸ—ΊοΈ

Navigation

Within your apps you'll likely want to navigate between different composables. This can be done using the Compose navigation component, which you'll learn how to use thoroughly within the book!

πŸ–ΌοΈ

Canvas Drawing

While Compose offers a lot of UI components, there are going to be times where we want to have complete control over the things we are drawing. For this we can create custom drawing and components using the canvas, which we'll learn all about throughout various projects!

πŸ‘‡

Gestures

In all applications, user will be performing gestures against our UI. This works a little differently when it comes to Jetpack Compose but fear not, we cover all different types of gesture interactions in the projects.

πŸ§‘β€πŸ’»

Interopability

Using Composables alongside the Android UI Toolkit (and vice versa) is going to be required in a range of scenarios. In the projects we will cover several scenarios on how to approach this and learn how to fully support interopability in Compose projects.

πŸ”’

Permissions

Many applications utilise permissions to access specific features and/or data on a device. Whether its device media, location or camera acess - how we do this in Compose app changes looks a bit different compared to existing approaches, which we'll cover in this course.

⛓️

Constraint Layout

The Constraint Layout empowered us to create complex layouts when compared with using legacy View imlpementations. This concept is also available in compose and useful in certain scenarios, which we'll teach you all about in the listed projects.

βš’οΈ

Custom Composables

While the compose APIs offer a lot of functionality and flexibility, there are going to be some scenarios where we need to work with lower-level APIs to build desired components and layouts. We'll be creating custom composables using these lower level APIs to give you the experience for this in your own projects

πŸ–₯️

Adaptive Layouts

Building layouts that adapt to different screen sizes / orientations helps to improve the UX of our applications. In this course we cover how you can create more adaptive layouts when creating UI with Jetpack Compose.

Pricing

Number of team members:

Read

$

179

  • ebook course (ePub, azw3, PDF and HTML)
  • 1800+ pages of tutorial content
  • Build 12 Compose Projects
  • Source Code
Buy Now
Deep Dive

$

259

  • ebook and video course (MP4, ePub, azw3, PDF and HTML)
  • 1800+ pages of eBook content
  • 13+ hours of video content
  • Build 12 Compose Projects
  • Source Code
Buy Now
Watch

$

179

  • video course (MP4)
  • 13+ hours of video content
  • Build 12 Compose Projects
  • Source Code
Buy Now
Testimonials

Mike Wolfson

Lead Android Engineer at Adobe, Google Developer Expert Android

This content is super well organized and really helped me get up to speed with Jetpack Compose. The practical examples are well designed, and I feel like I understand the important fundamental aspects of the technology pretty well after going through this course.

Giovanny Velez

Globant, Android Tech Lead

Joe Birch made an amazing job with this book. The contents are clear, practical and the examples are more than good to begin with Compose.

Etienne Vautherin

Orange S.A.

I was looking for a clear reference book to ensure that my code follows guidelines and good practices. Β« Practical Jetpack Compose Β» is the one!

Jovche Mitrejchevski

9to5 software

When I've started learning Jetpack Compose, there wasn't a lot of material available. Once this book rolled out, it was a blast of enlightenment on the topic. It helped me fill out all the gaps I missed as a beginner, and get much more advanced as I was progressing through the book. The book is amazingly well written - Joe put a lot of attention on top of his great ability to explain things well. It will definitely help you get started and get comfortable to write apps using Jetpack Compose

Alexandre Moraes da Silva

MConf

Great book. Starts from the basic and goes to complete apps. I bought it at very earlier stage and the updates was constant adding more content related to jetpack compose and Android Development. Really great stuff to learn this technology. Nice work Joe Birch!

Juarez Lopes

Great book, everything is well explained and the examples are awesome. I really recommend this book to anyone interested in Compose!

Frequently Asked Questions

Totally! I want this to be accessible to everyone - please send an email to contact@compose.academy and we'll send you over a discount code 😊

Yes! If you have already purchased the Essentials (eBook) version then you'll be eligible for a reduced price Deep Dive Bundle. Please contact us at contact@compose.academy for a discount code.

The project will be frequently updated with the latest versions of Jetpack Compose. The course is currently using Jetpack Compose v1.6.7.

Because this is a digital download, don't currently offer refunds on purchases. If you're unsure about purchasing the product, please check out the preview chapter at the top of this page.

Both the code from the projects and the code samples in this book comes with the Apache License 2.0. Please be sure to read these licenses if you are going to be taking the code into some of your own projects!

Haven’t got your answer? Contact us now