There was a lot of exciting news announced at Google I/O this week — one of the things I had been looking forward to was hearing about large screen experiences. While these devices and design principles have existed side-by-side for some time, it’s always felt like support for developers has never quite fully been accessible. However, with some of the announcements at I/O this week, supporting these experiences on larger devices is starting to get more out-of-the-box support.

During the talks around this topic I saw several mentions of the Navigation Rail, a vertical navigation bar which is part of…


In a recent blog post, we took a look at how we can use Compose Navigation in a modularized application. With this approach we saw many benefits — allowing us to centralise our navigation logic in a single place, while also decoupling navigation dependencies from the rest of our application.

When building out the navigation for Minimise, every Composable destination was placed into a root graph. While this works, it isn’t very practical — it means that the entire navigation of our app is structured as a single graph. Instead, it would make more sense to group composable destinations into…


A large amount of mobile apps will need some form of Navigation, allowing users to move between different parts of an application. When implementing these requirements within Android Apps, applications have either rolled their own solutions, relied on traditional intents or the fragment manager, or explored the option of the Navigation Component over recent years. Throughout the alpha and developer preview releases of Jetpack Compose I was often asked, “What about navigation?”, “Is it possible to navigate between composables?”. …


Since the announcement of Jetpack Compose, followed by the developer and alpha releases of the framework, excitement has been building around getting this into our apps. With the migration to Compose, we will see huge improvements in developer productivity, application stability and maintainability, as well as other side affects in things such as hiring (who wouldn’t want to work on a team adopting these new technologies!). However, alongside all of these topics, one question I often get asked around Jetpack Compose is when is there going to be a stable release? It is also something I often wonder too! Whilst…


Since the introduction of the Navigation Component on Android, navigating the different parts of our application has become much more pleasant to implement. We’ve been able to better decouple navigation logic from our activities and fragments, along with being able to test these paths with more ease. However, the Navigation Component has only ever allowed us to achieve these things with components contained within Android application or library modules — with these not being the only kind of modules that our Android projects support, developers have been eager for more module type inclusion for the navigation component. For example, when…


That time of the year has come, a new Android version is on the horizon! As announced in a blog post earlier this week, the first developer preview of Android 11 is now available — along with details on some of the changes that are happening. With this announcement come some changes to how the system operates when it comes to permissions and how this will affect applications — I wanted to take this chances to flesh out some of these changes and share some thoughts around them.

This was originally posted on joebirch.co

One-time permissions

Currently when we grant an application…


This was originally posted at joebirch.co

In many screens of our applications it’s likely that we’re making use of a Toolbar / AppBar within our Android applications. When it comes to building apps with Jetpack Compose, we’re going to want to recreate this component. In this article we’re going to take a look at the Top App Bar component which allows us to do so.

There is a supporting video for this blog post if you would prefer to learn about the Top App Bar through that medium:

The TopAppBar component is often used as the header for our…


Within Android Studio 4.0 Canary 1 we can start exploring Jetpack compose, a new way to build the UI for your android applications in a declarative manner. To get started with jetpack compose, there is a great tutorial on the official developer site. In this series of articles I want to dive into each of the components that are available, exploring how we can utilise each of them within our applications.

This was originally posted on my personal blog

In this article we’re going to start with the Button component, something that we’re likely to use in most of our…


I’ve always known about the GDE program. Even when I started to dive into Android development, I remember seeing a few Android developers who were GDEs — these are some of the people who I started to learn android from in the beginning. I was attending university at this time when I started learning Android — we didn’t have a specific course or module that covered mobile development, it was just something that I wanted to pursue alongside my other modules. I managed to find a way for this to fit it in with the rest of my curriculum and…


When it comes to manipulating our user interfaces within Android applications, there are a couple of approaches that we can take. In these cases, we need to obtain a reference these views in-order to manipulate them in some way. For this, we’ll either use findViewById(), followed by casting the view to the corresponding type. Or if we’re using kotlin, then we’ll use the kotlin android extensions to perform synthetic access to the views from our layout files. Whilst these two are perfectly fine approaches to take, they do come with some possible pitfalls:

  • When using findViewById, the casting of view…

Joe Birch

Android Engineering Lead at Buffer, Google Developer Expert for Android & Flutter - Passionate about mobile development and learning. www.joebirch.co

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store