Issue #349

February 17th, 2019

Articles & Tutorials

link image   Build an accessible smart guitar for the mute, deaf and blind (

Joe Birch describes how he built the Chord Assist guitar — a guitar that will help to improve the experience for the mute, deaf and blind when it comes to learning the guitar.

Null is your friend, not a mistake (

Roman Elizarov shares his thoughts on how optionals make nullability a safer way to indicate the absence of values.

link image   Integrate Square payments into your Android app (

Square In-App Payments SDK makes it easy to integrate secure, compliant payments. The SDK provides an interactive card-entry interface that’s optimized for speed and customizable to match your app. Google Pay and stored card on file supported for quicker checkout.

ConstraintLayout Tutorial for Android: Complex Layouts (

In this ConstraintLayout tutorial, Fuad Kamal shows how to dynamically position UI elements in relation to other elements on the screen and to animate your views.

link image   Find An Android Job Through Vettery (

Vettery specializes in developer roles and is completely free for job seekers. Interested? Submit your profile, and if accepted, you can receive interview requests directly from top companies growing their dev teams.

Building MVI apps with Roxie (

James Shvarts introduces his implementation of the MVI architectural pattern and how he arrived at this implementation.

Launching a Kotlin Coroutine for immediate execution (

If you launch a coroutine using launch(Dispatchers.Main) while already on the main thread, will the code execute immediately? No, is the short answer. Craig Russell explains why.

Google Maps for Android Pt 2: User Location (

In this tutorial, Paul Trebilcox-Ruiz uses the previous article as a starting point and take the next step towards something a little more interesting: tracking location so that the map displayed makes sense contextually for your user.

Cloud Build Recipes - Saving the Build Cache (

This post by Ryan Harter is part 3 in a series on setting up Google Cloud Build (GCB) for Android developers. In this post he looks at two builders that make caching data between builds easy, speeding up your builds

Retrofit meets coroutines (

A much-anticipated PR has finally been merged into Retrofit 2, officially bringing coroutine support. Márton Braun takes a look at a couple different ways to make use of this.

Unwrapping Framework Binding Adapters (

Over time Zarah Dominguez has moved from seeing data binding as a Butterknife replacement to utilizing more data binding features. But, she noticed that the framework provides a lot more bindings than expected, enabling her to remove duplicate code.

Muselee 7: Top Artists Network (

Mark Allison's series of articles on building an app from scratch now starts looking at the first feature module which will provide a list of the most popular artists on

Google screwed our startup because of the faceless systems (

Yaowei Yeo poured his heart into getting a product out to market over countless late night caffeine-fuelled coding sessions. Then one day, Google’s faceless system flagged, then shut down his account, ending the 7 years spent developing for Android.

How we built Monzo Chat on Android (

Tas Morfopoulos describes the steps taken and a description of the overall architecture of their chat app, including lots of (simplified) code examples to help you understand how it was built.

An Introduction to ViewPager2 (

ViewPager has had many issues which may have made it difficult to work with. Chris Mitchell takes a look at the newly released alpha version of the updated ViewPager view which aims to provide a solution to these issues.

How Kotlin makes me a more productive software developer (

Simon Wirtz dropped the Java language more-or-less entirely in favor of Kotlin because he feels much more productive with the language. Here he lists a couple of those reasons.

R8 Optimization: String Constant Operations (

Jake Wharton continues his look into R8, this time delving into how Strings are given special treatment in the Java and Kotlin language, in Java bytecode, and in Dalvik bytecode and how R8 can manipulate them at compile-time.

When to use Kotlin's standard functions (

Kotlin comes with several high-level, generic standard functions that apply to any object: let(), run(), with(), apply(), and also(). Dan Lew describes why it's OK to not use them until you have a deeper understanding of the language.



link image   Place a sponsored post & reach over 66k Android devs (



Senior Android Engineer @ idagio (Berlin Kreuzberg)

We are looking for a passionate and product-driven Senior Android Engineer to join our marvelous Mobile team: a group of people with a shared interest in great user experience, robust software, fast delivery, and clear communication. Come build the best classical music streaming service with us!

Senior Android Developer @ wegfinder (Vienna)

Wegfinder is an award-winning app with a growing user base. It combines public and individual transport to provide an easy to use intermodal mobility solution. Join our international agile development team (10 people) to build high-quality software you can be proud of!


Libraries & Code

link image   RoundImageView (

A Round ImageView that works with vectors

roxie (

Lightweight Android library for building reactive apps



link image   How Google fought bad apps and malicious developers (

Google worked last year to improve abuse detection technologies & systems and significantly increased their team of product managers, engineers, policy experts, and operations leaders to fight against bad actors.

An Update on Android Things (

Google is refocusing Android Things as a platform for OEM partners to build devices in smart speakers and smart displays categories moving forward.


Videos & Podcasts

link image   Quickly Run Kotlin Code in Android Studio and IntelliJ (

In this video, Nate Ebel shows how to quickly run Kotlin code in Android Studio and IntelliJ without having to run your program or writes tests

Should I Rewrite My App? with Jeroen Mols (

After you’ve been working on an app for some time, the most common quandary one runs into is the need to rewrite the app. Jeroen walks us through his thinking about when it's best to rewrite.