Kotlin Class Extensions
Description:Class extensions are a powerful feature of Kotlin that allow you to add behavior to classes without extending them. In this video we will take a look at how to work with class extensions, some of the subtlet...
SAM Type Conversion in Kotlin
Description:In this screencast, we will do a recap on SAM Types, see how they work in Kotlin to support Java interoperability, and we'll also see some of the "gotchas" involved with the feature.
Converting a Java Android Project to Kotlin
Description:Google announced official support for the Kotlin Programming language at google io 2017. In this video we will learn how to migrate our existing Java Android projects to the Kotlin language by using the auto...
Build Variants #1: Product Flavors
Description:In this series, you will learn how to produce separate APKs from the same code base using product flavors. Each flavor will be branded differently, including a custom launcher icon, color scheme, and app name.
Build Variants #2: Source Sets
Description:In this series, you will learn how to produce separate APKs from the same code base using product flavors. Each flavor will be branded differently, including a custom launcher icon, color scheme, and app nam...
Description:Android O gives users more control over what notifications they want to see from applications. In this video learn how to implement Notification Channels which are required if you want to target Android O.
Using Java 8 Lambdas to Clean Up Click Listener Code
Description:Android view click listeners are often implemented inline using anonymous inner classes. Lambda syntax offers a more streamlined syntax. This video walks you through how lambda syntax map to anonymous inne...
Dagger and Kotlin
Description:Dagger is a dependency injection framework. In this screencast you will learn how to set up Dagger in a Kotlin Android app and some best practices.
Android Studio Keyboard Shortcuts
Description:In this screencast, you'll learn how to be more productive with these useful navigation and editing keyboard shortcuts in Android Studio.
Description:User authentication is very useful for mobile apps but can be tricky to get right. In this screencast we'll show you how to set up Firebase with Android.
Description:Analytics is crucial to seeing how your app actually gets used and determining the best path forward for new features and maintenance. In this screencast learn how to use Firebase Analytics in your applicati...
Firebase Cloud Storage
Description:Firebase Cloud Storage provides an easy way to store files remotely and fetch them when needed. In this video learn the basics of the cloud storage api to upload, download, and delete files.
Description:CoordinatorLayout is a tool that allows you to coordinate the movement of one view with another. In this screencast, you will see a few examples of how CoordinatorLayout can be used and how to customize its ...
Description:Unit testing your classes helps ensure that they work correctly based on controlled inputs but doing the setup can be painful if you have a lot of dependencies. Learn how to create mock objects using Mockito...
Mock vs Spy
Description:There are a wide variety of test doubles you can use to make testing easier. In this video we will discuss mocks and spies, what their differences are and when you would use each of them.
Description:In this video you will learn about ConstraintLayout. It will cover how to use the graphical editor, how to add constraints to your views and tweak their attributes to position them on screen, and it has an e...
Creating Adaptive Icons for Android
Description:Android Oreo introduces Adaptive Icons which allow device manufacturers to choose the outline, or mask, of all app icons on the device. This guarantees that all app icons will be uniform on each device, whet...
Room Migration Testing
Description:As applications are developed you will often need to add additional fields to your database. The architecture component Room achieves this by using Migrations. In this screencast, you will learn how to test ...
Espresso Test Recorder
Description:Integration tests provide a way to verify the features in your application continue to work as you expect while adding new features and refactoring existing ones. In this screencast you will learn how to use...
Kotlin and Android Lifecycles
Description:What are some strategies for dealing with Kotlin and Android Lifecycles? In this screencast, cast you'll learn how Android Lifecycles appear to inhibit some core behaviors of Kotlin.
Android NFC #1: Launch Activity
Description:In the first screencast of this series we’ll cover the basics of NFC tags introducing NDEF and the Android tag dispatch system. We’ll look at how to add an intent-filter to the Manifest entry for a given Act...
Android NFC #2: Read Payload Data from a Tag
Description:In the second screencast of this series, we’ll build upon the app we started in the first screencast and demonstrate how we can retrieve the payload of the tag within the Activity which was launched when the...
Creating a Color Theme from a Photo in Adobe Color
Description:When it comes to picking out colors that match photos, it can be difficult to pick the perfect color to pair. In this screencast, we’ll show you how to use Adobe Color to pick colors for an Android card base...
Description:In this video you will learn how to configure a RecyclerView and its Adapter to display mutliple types of views in the list. You will determine which type of view needs to be displayed depending on the data,...
RecyclerView Efficient Reloading
Description:In this video you will learn how to tell a RecyclerView Adapter that the underlying data has changed. You will also see the typical quick way of telling it to update, as well as a much more efficient impleme...
Description:In this screencast, we'll learn how to take a Java class converted to Kotlin using the conversion tool built in Android Studio, and apply some better null safety to the code learning about null safety along ...
Android NFC #3: Foreground Dispatch
Description:In the third screencast of the Android NFC series, we’ll continue to build on the app we’ve been working on in the series so far. Now we’ll begin preparations to write to a tag by creating a new Activity whi...
Creating a Library with the Material Design Plugin
Description:The Material Design plugin is designed to make creating and managing a design system for Android easy. In this screencast, we’ll show you how to get your Sketch documents set up to use the official Material ...
Android NFC #5: Android Application Records
Description:In the final screen cast of the series we’ll return to the Android chooser behavior which asks the user which application they wish to use to handle a newly discovered tag. We’ll then look at how we can add ...
Android NFC #4: Write an NdefTag
Description:In this screen cast we’ll further build upon the app from the last cast where we got foreground dispatch working to handle tag discovery events within a resumed Activity. We’ll look at how we can construct a...
Architecture Components #1 - Room
Description:While Android SDK provides the APIs for using SQLite databases, they force developers to write a lot of boilerplate code. Room solves this problem by creating the glue code that saves objects to SQLite and r...
Architecture Components #2 - LiveData
Description:In the previous video you learned about Room, the object persistence architecture component but we had to use the AsyncTask to perform database access in a background thread. LiveData makes it easier to perf...
Architecture Components #3 - ViewModel
Description:In the third video of this series, we’ll add ViewModel to our application. Instead of calling the repository or other components directly from the Activity or Fragment, we can put some of that code in the Vi...
Description:As of Android P, the FingerprintManager is deprecated in favor of the BiometricPrompt API. In this screencast, we’ll quickly review a previous FingerprintManager implementation and then dive into setting up...
Description:Navigation Component. Navigation Architecture Component. How to apply the Navigation Component to an existing application. Review major parts of the Navigation Component.
Description:Work Manager. Background work has always been a somewhat painful on Android, Work Manager provides a unified API that picks the best Scheduling implementation based on the version so that the developer no lo...
Architecture Components #4 - WorkManager
Description:In this screencast, we’ll cover a new background work library introduced at Google I/O 2018 - WorkManager. This release will have a huge impact on most Android apps. Background work has always been painful i...
Architecture Components #5 - Navigation
Description:The Navigation Architecture Component was introduced at Google I/O 2018. This new library aims to simplify navigation from one screen to another. In this screencast, we’ll see how to apply the navigation com...
Architecture Components #6 - Data Binding
Description:In this screencast, you will learn how to use the Android Jetpack data binding component to declaratively bind data to your UI layouts.
Room with RxJava
Description:In this screencast, we’ll show you how to convert an app using a vanilla Room setup to one that uses RxJava to create streams of data from the local database.
CameraX API #1 - Getting Started
Description:In the first screencast, you will set up a project to use CameraX and create a TextureView that will act as our camera preview display.
CameraX API # 2 - Requesting Camera Permissions
Description:Any app that utilizes the user’s smartphone camera must request permission from the user first. In the second screencast, you will create a feature that requests permission to use the camera from the user.
CameraX API #3 - Capturing your First Photo
Description: In this screencast, we will finish setting up the camera preview from the first video and implement image capture capabilities for your app.
Paging Library with Web API
Description:It’s better for user experience to load data from a server as needed, but doing this in a list as the user scrolls can be challenging. The Jetpack Paging library solves most of the common issues with this fe...
Room with Coroutines
Description:Room databases are a common solution for local application storage, but the vanilla setup requires the use of callbacks to deal with the background threading. Code written in this style often appears disjoin...