Development Barn
Updated: 2024.11.10
Android
In case you want to learn about Android Development
Framework
AnDevCon: Android Internals Overview - Marko Gargenta.mov
RecyclerView
Drag and Swipe with RecyclerView
Enter animation and LayoutAnimation
RecyclerView — More Animations with Less Code using Support Library ListAdapter
Improving scrolling behavior of nested RecyclerViews - Part 1
Saving scroll state of nested RecyclerViews - Part 2
Optimizing Nested RecyclerView
Fixing RecyclerView nested scrolling in opposite direction
Paging Image Carousel with RecyclerView
Drag and Drop between two RecyclerView ‘s
Animation
Get Animated (Android Dev Summit ‘18)
Exploring Meaningful Motion on Android
An Introduction to Icon Animation Techniques
Make a moving Gradient Background in Android
Beautiful animations using Android ConstraintLayout
Make your app shine #3: How to reveal an activity with circular revelation
Polishing UI: Android StateListAnimator
StateListAnimator — a Powerful Little Tool for Elevation Animation
Scroll your Bottom Navigation View away with 10 lines of code
TransitionDrawable — Small Gems of the Android Framework
Animating your keyboard (part 1)
Animating your keyboard (part 2): reacting to WindowInset animations
One still surprisingly valid reason to use the old Animation (API 1+)
Design and Style
Best Practices for Themes and Styles (Android Dev Summit ‘18)
Good to great UI animation tips
Spantastic text styling with Spans
Using gradient for styling text
Styling internationalized text in Android
Understanding how to declaratively style text on Android
AppCompat — Age of the vectors
Night Theme => AppCompat — DayNight
Vector illustration basics for Android developers - Part 1: Primitive Shapes
Material shadows on Android by Sebastiano Poggi, JetBrains EN
Android Styling: Common Theme Attributes
Motional Intelligence: Build smarter animations
Gesture Navigation: going edge-to-edge
Animating your keyboard using WindowInsets
Custom View
Mastering the Android Touch System
Creating an Extendable Floating Action Button in Android
How I drew custom shapes in bottom bar
How we implemented 3D cards in Revolut
Creating Custom Views in Android
Android: Why your Canvas shapes aren’t smooth
Jetpack Compose
Gestures in Jetpack compose — All you need to know
The Do’s and Don’ts of Jetpack Compose
Scoped recomposition in Jetpack Compose — what happens when state changes?
Parallax Effect with SensorManager using Jetpack Compose
Ticker Board in Jetpack Compose
Neumorphism in Jetpack Compose
Background Execution
Modern background execution in Android
Things to consider before running background tasks
Exploring Android Thread Priority
Executor Framework- Understanding the basics
Understanding CPU and I/O bound for asynchronous operations
Access the clipboard from the background
Background Work on Chinese ROMs
Why your Push Notifications never see the light of day
Google’s reply to WorkManager on Chinese ROMs. Only applys to ForegroundService and other
Android Studio
50 Android Studio Tips, Tricks & Resources you should be familiar with, as an Android Developer
Deep dive into .idea folder in Android Studio
Gradle
Using Gradle build cache with Kotlin
Gradle Tips and Tricks for Android(includes kotlin-dsl, resolving dependencies conflicts, apk splits, buildConfigField, externalNativeBuild, buildTypes configuration, gradle properties, offline mode, product flavors, dependency graph)
How to Include an External .aar File Using Gradle?
How to manage dependencies in a multi module project?
Name your .apk & .aab files, archivesBaseName in build.gradle of app module
Android library development - Getting started
Unbreaking the changes in Compose 1.7
Build Time
Build your Android app Faster and Smaller than ever
How I reduced my Android build times by 89%
ADB
Practical ADB usage to enhance your life! - Benjamin Kadel
Dagger2(Always read the newets posts)
Understanding Dagger 2 Multibindings + ViewModel
Injection into Android Component’s Constructors is real
Kotlin+Dagger best practices/documentation
Brave New Android World with AssistedInject
APK
Playing APK Golf - Reducing an Android APK’s size by 99.99%
Reducing APK size by using ABI Filters and APK split
android-keystore-password-recover
Proguard Hell
Troubleshooting ProGuard issues on Android
Feeding ProGuard’s inputs: where are all of these rules coming from?
Practical ProGuard rules examples
Android’s Built-in ProGuard Rules: The Missing Guide
Strings, Please! Eliminating Data Leaks Caused by Kotlin Assertions
Security
Android Undercover: Native Code Translation for AV Stealth - DC615/DEF CON Nashville
How long will you go to protect your Android app from being tampered?
Securing Network Data Tutorial for Android
Bang! Bang! You have been hacked.
Performing OAuth on Android with Custom Tabs
Securing API Keys using Android NDK (Native Development Kit)
Android Unique Device ID: History and Updates
Licenses
How open source licenses work and how to add them to your projects
Including Open Source Notices (Including an activity showing all libraries licenses. However, This official library doesn’t work very well)
OSS
Things I wish I knew when I started building Android SDK/Libraries
The beginner’s guide to contributing to a GitHub project
Removing sensitive data from a repository
Publish Your Android Library on JitPack for Better Reachability
What legal documents should your app have?
Release
Did you get one of these Google Play Developer Policy Violation Emails?
Clean your status bar like a pro!
Enhance Your Google Play Store Description With Rich Formatting & Emojis
Best Languages for App Localization
Test
Understanding and Mastering the World of Android Testing (Part 1)
Mocking Kotlin classes with Mockito — the fast way
Testing App Startup Performance
Architecture
Google I/O 2018 app — Architecture and Testing
A Guided Tour inside a clean architecture code base.
Building a Shazam Clone Part 1 (Design) — Building Android Apps Series
Modularization - Lessons learned
MVWTF: Demystifying Architecture Patterns
Performance
Performance Improvements for Search on The Yelp Android App
Advanced JSON parsing techniques using Moshi and Kotlin
How to use responsive images to speed up your apps — with android glide example
Resources for Learning OpenGL - An Android Developers Guide
How OkCredit Android App boosted Network Performance by 30%
CI, Continuous Integration
Using GitHub Actions for Android Continuous Integration and Delivery
Cloud Continuous Integration on Android with Kotlin Project
Archiecture Components
5 common mistakes when using Architecture Components
Android ViewModel. How it works.
Room
Understanding migrations with Room
Firebase
Use Firebase without Google Services Gradle Plugin
Java
Kotlin
Kotlin Sequences: An Illustrated Guide
An Illustrated Guide to Covariance and Contravariance in Kotlin
The Ins and Outs of Generic Variance in Kotlin
Coroutines
Seven recipes to understand flows and asynchrony in Kotlin
How I Fell in Kotlin’s RunBlocking Deadlock Trap, and How You Can Avoid It
KotlinConf 2017 - Deep Dive into Coroutines on JVM by Roman Elizarov
KotlinConf 2017 - Deep Dive into Coroutines on JVM by Roman Elizarov
Kotlin Coroutines patterns & anti-patterns
Easy Coroutines in Android: viewModelScope
KotlinConf 2019: Coroutines! Gotta catch ‘em all! by Florina Muntenescu & Manuel Vivo
Create an application CoroutineScope using Hilt
The Silent Killer That’s Crashing Your Coroutines
Framework Classes
Application
Reminder: “allowBackup=true” is the devil if you are using Hilt or Dagger
This is why your subclassed Application isn’t always instantiated
Context
Enumerating Resources in Android
Activity
Android “launchMode” (Visualized)
The Android Launch Mode Animated CheatSheet
Finally understanding how references work in Android and Java
The (Complete) Android Splash Screen Guide
The Android Lifecycle cheat sheet — part I: Single Activities
The Journey Of Launching An Android Activity
Seamless Android app launch animations using Intent Source Bounds
Fragment Transactions & Activity State Loss
Storage
DevBytes: Android 4.4 Storage Access Framework: Client
When you access an existing media file, you can use the value of the DATA column in your logic.
Views
Android ImageView ScaleType: A Visual Guide
Scrolling Behavior for Appbars in Android
Media
Discover the core Android API for Speech Recognition.
PIP
Making magic moments with picture in picture (Three more links at the end of the article)
Vibrate
Google Play In-App Purchase
Exploring the Play Billing Library for Android
Programming
Best of Fluent 2012: /Reg(exp){2}lained/: Demystifying Regular Expressions
A Programmer’s Introduction to Unicode
Leetcode Pattern 1 BFS + DFS == 25% of the problems — part 1
Understanding SOLID Principles: Open Closed Principle
Demystifying Dynamic Programming
My favorite examples of functional programming in Kotlin(powerset in the middle of the article)
Flutter
Deep Dive Into The Pubspec.yaml File
What’s the pubspec.lock file in a Flutter Project?(Some files are misplaced)
Other
Generic
Why not GUI application terminate like console application?
Server
Capture all passwords trying to ssh into my server!
Create your first safe server that’s ready for production
Configure SSH Keys Authentication With PuTTY And Linux Server In 5 Quick Steps
Disable a user’s login without disabling the account
A fast and easy Docker tutorial for beginners (video series)
Getting Started with Docker on Your VPS
Hexo
Use Hexo and deploy to GitHub Pages
Using Git Submodules to Manage Your Custom Hexo Theme
Encryption
Game
From Zero to Game Designer: how to start building video games even if you don’t have any experience
Thoughts
Optimize Your Programming Decisions for the 95%, Not the 5%
More links at any time
😍