41554 blogs · [ { "id": "01a087a4-d72c-71b3-931d-1479306634d4", "title": "Adding Scrollbars to Jetpack Compose", "url": "http://michaelevans.org/blog/2026/02/11/custom-scroll-indicators-in-jetpack-compose-foundation/", "published_at": "2026-02-12T02:14:16+00:00" }, { "id": "01a087a4-d72c-71b3-931d-1479315af9bc", "title": "Smooth Theme Transitions in Compose with Animated ColorSchemes", "url": "http://michaelevans.org/blog/2025/07/01/smooth-theme-transitions-in-compose-with-animated-colorschemes/", "published_at": "2025-07-02T03:38:27+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147932126f79", "title": "Turning Any Android Callback into a Flow with callbackFlow", "url": "http://michaelevans.org/blog/2025/03/22/turning-any-android-callback-into-a-flow-with-callbackflow/", "published_at": "2025-03-23T03:10:16+00:00" }, { "id": "01a087a4-d72c-71b3-931d-14793264ef7b", "title": "UI Testing Made Easy: The Robot Test Pattern on Android", "url": "http://michaelevans.org/blog/2024/12/14/ui-testing-made-easy-the-robot-test-pattern-on-android/", "published_at": "2024-12-14T15:52:24+00:00" }, { "id": "01a087a4-d72c-71b3-931d-1479326a3b25", "title": "Modernizing Your Android App's Data Storage: SharedPreferences to DataStore", "url": "http://michaelevans.org/blog/2024/10/10/modernizing-your-android-apps-data-storage-sharedpreferences-to-datastore/", "published_at": "2024-10-10T15:53:57+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147932ad2fac", "title": "Mastering ktlint: A Guide to Crafting Your Own Rules", "url": "http://michaelevans.org/blog/2024/09/07/mastering-ktlint-a-guide-to-crafting-your-own-rules/", "published_at": "2024-09-07T15:49:37+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147932dad1f4", "title": "Stop Repeating Yourself 2: Using Test Fixtures with AGP", "url": "http://michaelevans.org/blog/2024/07/29/stop-repeating-yourself-2-using-test-fixtures-with-agp/", "published_at": "2024-07-29T23:43:27+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147932fc85c7", "title": "Understanding Referrals using Google Play", "url": "http://michaelevans.org/blog/2024/06/27/understanding-referrals-using-google-play/", "published_at": "2024-06-27T23:41:33+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147933d376a3", "title": "Accessing Test Resources using Kotlin Multiplatform", "url": "http://michaelevans.org/blog/2024/04/17/accessing-test-resources-using-kotlin-multiplatform/", "published_at": "2024-04-18T00:11:01+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147933e8cc95", "title": "Building Flipper Plugins for Fun and Profit", "url": "http://michaelevans.org/blog/2022/09/28/flipper-plugins-for-fun-and-profit/", "published_at": "2022-09-29T03:41:17+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147934c6f131", "title": "Android Developer Challenge", "url": "http://michaelevans.org/blog/2020/06/21/android-developer-challenge/", "published_at": "2020-06-22T03:41:17+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147934dc0f62", "title": "Improving App Debugging with Flipper", "url": "http://michaelevans.org/blog/2020/03/10/improving-app-debugging-with-flipper/", "published_at": "2020-03-11T00:10:22+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147935acee62", "title": "Dropping Columns Like It's Hot", "url": "http://michaelevans.org/blog/2020/02/10/dropping-columns-like-its-hot/", "published_at": "2020-02-11T01:03:03+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147935b6ddc6", "title": "Stop Repeating Yourself: Sharing test code across Android Modules", "url": "http://michaelevans.org/blog/2019/09/21/stop-repeating-yourself-sharing-test-code-across-android-modules/", "published_at": "2019-09-22T01:34:52+00:00" }, { "id": "01a087a4-d72c-71b3-931d-147935d3d757", "title": "Hands on with ViewPager2", "url": "http://michaelevans.org/blog/2019/02/07/hands-on-with-viewpager2/", "published_at": "2019-02-08T02:38:07+00:00" }, { "id": "01a087a4-d72c-71b3-931d-14793613686c", "title": "Enabling Night Mode on Android Nougat", "url": "http://michaelevans.org/blog/2016/08/23/enabling-night-mode-on-android-nougat/", "published_at": "2016-08-23T22:27:01+00:00" }, { "id": "01a087a4-d72c-71b3-931d-14793613e2ff", "title": "Using Build Types with the Google Services Gradle Plugin", "url": "http://michaelevans.org/blog/2016/03/31/using-build-types-with-the-google-services-gradle-plugin/", "published_at": "2016-04-01T01:11:55+00:00" }, { "id": "01a087a4-d72c-71b3-931d-1479370763ae", "title": "Changelog for N Support Libraries", "url": "http://michaelevans.org/blog/2016/03/09/changelog-for-n-support-libraries/", "published_at": "2016-03-10T00:38:46+00:00" }, { "id": "01a087a4-d72c-71b3-931d-1479372b47a6", "title": "Using Dagger 1 and Kotlin", "url": "http://michaelevans.org/blog/2016/02/17/using-dagger-1-and-kotlin/", "published_at": "2016-02-17T18:43:25+00:00" }, { "id": "01a087a4-d72c-71b3-931d-1479374ab6bd", "title": "Android Studio Tips and Tricks", "url": "http://michaelevans.org/blog/2016/01/06/android-studio-tips-and-tricks/", "published_at": "2016-01-07T01:25:53+00:00" } ] posts Claim your blog
Back to michaelevans.org
Blog · corpus.blog/blogs/michaelevans.org/posts

michaelevans.org

michaelevans.org

2026

2025

2024

2022

2020

2019

2016