User Tools

Site Tools


android_jetpack_compose

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
android_jetpack_compose [2026/05/13 09:18] – [Camera, OCR, etc] kalaschnikowandroid_jetpack_compose [2026/05/13 09:19] (current) – [Jetpack Glance (Widgets)] kalaschnikow
Line 1: Line 1:
 +====== Android Jetpack Compose ======
 +
 +===== Common information about Jetpack Compose =====
 +
 +  * [[https://developer.android.com/jetpack/compose/tutorial|Android Jetpack Compose Tutorial]]  -> [[Jetpack Compose Tutorial]] (my summary)
 +
 +  * [[https://developer.android.com/jetpack/compose/documentation|Get started with Jetpack Compose]] -> [[Get started with Jetpack Compose]] (my summary)
 +    * a "bigger" documentation (something like a book)
 +
 +  * [[Android Basics with Compose]] online course by Google
 +
 +  * https://m3.material.io/develop/android/jetpack-compose
 +
 +  * [[https://foso.github.io/Jetpack-Compose-Playground/|Jetpack Compose Playground]]
 +    * This is a community-driven collection of Jetpack Compose documentation/examples/tutorials and demos.
 +    * Some links:
 +      * [[https://foso.github.io/Jetpack-Compose-Playground/general/getting_started/|Jetpack Compose Playground - Getting Started]]
 +
 +
 +  * [[https://dev.to/zsmb13/jetpack-compose-first-impressions-and-learning-resources-3ghp|Jetpack Compose: First Impressions and Learning Resources]]
 +  * [[https://www.raywenderlich.com/7032631-jetpack-compose-tutorial-for-android-getting-started|Jetpack Compose Tutorial for Android: Getting Started]] by Alex Sullivan
 +
 +  * [[https://www.youtube.com/watch?v=eox4EE66nXw|Jetpack Compose For Beginners — Crash Course 2024]] a 15 minutes (but very informative) video by Daniel Atitienei
 +
 +
 +  * Articles / Videos by Leland Richardson
 +    * [[https://medium.com/androiddevelopers/understanding-jetpack-compose-part-1-of-2-ca316fe39050|Understanding Jetpack Compose — part 1 of 2]] by Leland Richardson
 +    * [[https://medium.com/androiddevelopers/under-the-hood-of-jetpack-compose-part-2-of-2-37b2c20c6cdd|Under the hood of Jetpack Compose — part 2 of 2]] by Leland Richardson
 +    * [[https://www.youtube.com/watch?v=Q9MtlmmN4Q0&t=11s|Understanding Compose (Android Dev Summit '19)]] 
 +
 +
 +
 +===== Jetpack Compose UI Elements =====
 +
 +  * Adaptive Layouts
 +    * [[https://touchlab.co/adaptive-layouts-cmp|Adaptive Layouts in Compose Multiplatform]]
 +
 +  * Text
 +    * [[https://proandroiddev.com/mastering-text-in-jetpack-compose-e99dbf031aed|Mastering Text in Jetpack Compose]]
 +
 +  * TextField
 +    * [[https://proandroiddev.com/command-your-user-inputs-with-jetpack-compose-text-field-features-hidden-in-plain-sight-47aaacc56aaf|Command Your User Inputs with Jetpack Compose— Text Field Features Hidden in Plain Sight]]
 +    * [[https://www.youtube.com/watch?v=93M94tX35WA|7 Ways to Customize Text Fields in Compose!]] (video)
 +
 +  * FlowRow / FlowColumn
 +    * [[https://android-developers.googleblog.com/2024/10/creating-responsive-dashboard-layout-for-jetlagged-jetpack-compose.html|Creating a responsive dashboard layout for JetLagged with Jetpack Compose]]
 +
 +  * LazyColumn
 +    * [[https://proandroiddev.com/jetpack-compose-and-collectaslazypagingitems-a6c9adbf1a81|Jetpack Compose and collectAsLazyPagingItems]] by Dobri Kostadinov
 +      * Efficiently Managing Large Data Sets in Jetpack Compose with LazyColumn
 +    * [[https://blog.kotlin-academy.com/nested-lazycolumn-in-jetpack-compose-79cc5d56c603|Nested LazyColumn in Jetpack Compose]]
 +
 +  * Photo Picker
 +    * [[https://joebirch.co/android/exploring-the-android-photo-picker/|Exploring the Android Photo Picker]] by Joe Birch
 +    * [[https://proandroiddev.com/mastering-the-new-embedded-photo-picker-in-androidx-4cd151870757|Mastering the New Embedded Photo Picker in AndroidX]] by Oğuzhan Aslan
 +
 +  * Splash Screen
 +    * [[https://blog.kotlin-academy.com/how-to-implement-a-splash-screen-in-jetpack-compose-with-the-splashscreen-api-6f2767ede9d9|How to Implement a Splash Screen in Jetpack Compose with the SplashScreen API]]
 +      * Learn how to create a simple splash screen using the SplashScreen API.
 +
 +  * Icons
 +    * https://composeicons.com/
 +      * Looking for app icons? Alex Styl has converted the Internet's most popular icon libraries to Jetpack Compose Image Vectors so you will never run out of icons to use in your Compose apps.
 +
 +
 +  * Views in Composes / Composes in Views
 +    * [[https://www.youtube.com/watch?v=l4ME8YYWG30|How To Use Android Views In Compose & Composables In Android Views]] a video by Jov Mit 
 +      * ''androidx.compose.ui.platform.ComposeView'' -> to make use of a compose in XML world
 +      * ''AndroidView'' can represent a "normal" View in a Composable world
 +
 +  * Maps
 +    * [[https://joebirch.co/android/google-maps-in-jetpack-compose-getting-started/|Google Maps in Jetpack Compose: Getting Started]] by Joe Birch
 +
 +  * Recompositions
 +    * [[https://victorbrandalise.com/reducing-unnecessary-recompositions-in-jetpack-compose/|Reducing Unnecessary Recompositions in Jetpack Compose]] by Victor Brandalise
 +    * [[https://proandroiddev.com/catching-excessive-recompositions-in-jetpack-compose-with-tests-8d0b952e2853|Catching excessive recompositions in Jetpack Compose with tests]]
 +      * Sahand Zehtabchi demonstrates making recomposition behavior measurable and testable with a trackRecompositions modifier and automated tests for Jetpack Compose
 +    * [[https://www.youtube.com/watch?v=zM7RjsU3mTs|Debug Your Jetpack Compose UIs Effortlessly!]]
 +      * Charfaoui Younes shows an amazing library that will allow you to check recompositions and various aspects of your Jetpack Compose UIs.
 +
 +
 +  * Animations
 +    * [[https://doveletter.dev/docs/compose-animations|Jetpack Compose Animations]] - A growing catalog of self contained Jetpack Compose animation examples by skydoves
 +    * [[https://proandroiddev.com/container-transform-animation-98e5e74a15c9|Container transform animation with Jetpack Compose]] - nice animations (e.g. an animation that transforms a FAB into a full-screen page)
 +
 +  * Misc
 +    * [[https://www.youtube.com/watch?v=DZJV-ZKQ634|Fragments in Compose]]
 +    * [[https://blog.stylingandroid.com/compose-list-detail-basics/|Compose – List / Detail: Basics]] by Mark Allison
 +    * [[https://proandroiddev.com/jetpack-compose-system-ui-compatibility-and-immersive-status-bar-350eba262b7d|Jetpack Compose: System UI Compatibility and Immersive Status Bar]]
 +      * immersive (e.g. "edge-to-edge") status and nav bar 
 +    * [[https://proandroiddev.com/using-android-jetpack-datastore-with-jetpack-compose-6184338cf9c0|Using Android Jetpack Datastore in Jetpack Compose]]
 +    * [[https://www.youtube.com/watch?v=2L78_eCNDs8|How to Use the Google's New Screenshot Testing Framework for Compose]]
 +      * Philipp Lackner shows how to use Google's New Screenshot Testing Framework for Compose!
 +    * [[https://proandroiddev.com/coil-my-favorite-image-loading-library-for-jetpack-compose-877fa0b818fe|Coil: My Favorite Image Loading Library for Jetpack Compose]] by Stefano Natali
 +    * [[https://www.youtube.com/watch?v=MA6-ONDlXWU|Subtyping Composables - TypeAlias Show Clip]] (video)
 +    * Pull to Refesh
 +      * [[https://www.youtube.com/watch?v=rD-oFp63a-U|Pull To Refresh using material3 - Jetpack Compose]] by Daniel Atitienei (video) (the old way?)
 +      * [[https://joebirch.co/android/migrating-to-the-compose-pulltorefreshbox/|Migrating to the Compose PullToRefreshBox]] by Joe Birch
 +
 +
 +
 +
 +===== Navigation =====
 +  * [[https://www.rockandnull.com/jetpack-compose-navigation/|Jetpack Compose: Navigation]]
 +  * Jetpack Compose Navigation - Full Guide (aka "Jetpack Compose 🚀 Beginner’s Series") by Narayan Panthi
 +    * [[https://blog.kotlin-academy.com/jetpack-compose-android-beginners-series-4cebb66a69eb|Basics — Episode I]]
 +      * In Episode I of the Jetpack Compose Series, Narayan Panthi covered creating a login page and some UI elements.
 +    * [[https://blog.kotlin-academy.com/mastery-navigation-in-jetpack-compose-db00b0a0ef75|Navigation — Episode II]] (aka "Navigation in Jetpack Compose")
 +      * Now, dive into Navigation.
 +  * [[https://proandroiddev.com/navigation-drawer-using-jetpack-compose-27ea7db74903|Navigation Drawer using Jetpack Compose]]
 +
 +
 +  * [[https://interfacecafe.com/an-updated-primer-on-android-navigation/|An Updated Primer on Android Navigation]] (not really Jetpack Compose, but "conceptually" informative)
 +    * Navigation hierarchy
 +      * Parent / child
 +      * Siblings
 +      * Collections
 +      * Links
 +    * Navigation components
 +      * Navigation bar
 +      * Navigation rail
 +      * Navigation Drawer
 +      * Tabs
 +      * Up, Back, and Close
 +
 +
 +  * [[https://www.youtube.com/watch?v=r1gpJK7b0S4|No more String-based Routes! New Compose Navigation Release]] (Video)
 +  * [[https://www.paleblueapps.com/rockandnull/type-safe-navigation-compose-custom-classes/|Type-Safe Navigation in Jetpack Compose: Passing Custom Classes]]
 +  * [[https://www.youtube.com/watch?v=5a3vPRdwC8I|Type-Safe Navigation In Jetpack Compose]] (video)
 +    * Daniel Atitienei teaches how to use type-safe navigation. 
 +  * [[https://www.youtube.com/watch?v=y2zLFONuk7c|Why I Stopped Using popBackStack() to Navigate Back]] (video)
 +    * Philipp Lackner show you why you might consider not using popBackStack() to Navigate Back.
 +      * In short: 
 +        * don't use ''popBackStack()'' because it can cause navigation to an "empty screen" if the user accidentally clicks twice.
 +        * use ''navigateUp()'' instead
 +
 +
 +==== Navigation 3 ====
 +  * [[https://www.youtube.com/watch?v=6L6GfvlmKj8|Navigation 3 API overview]]
 +    * Learn Jetpack Navigation 3, Google's new library for building navigation in Android apps.
 +  * [[https://www.youtube.com/watch?v=I9Ws2Lxv0dw|Navigating Navigation 3 — with Alex Vanyo & Don Turner]]
 +    * Alex Vanyo and Don Turner from the Android team to explore Navigation 3 — what’s new, what’s changing, and how to keep your app’s navigation graph from becoming a spaghetti diagram worthy of a Michelin star.
 +  
 +  * [[https://www.youtube.com/watch?v=G_e9XL5tI6U|Navigation3 Basics (NavDisplay, Arguments, ViewModels)]]
 +    * Philipp Lackner implements a 2-screen list/detail navigation setup with the new Navigation 3 library. 
 +  * [[https://www.youtube.com/watch?v=37Q5yQaT7_I| Navigate Back With Result In Navigation3 (CMP & Native Android)]]
 +    * Philipp Lackner teaches how you can pop a screen from the back stack while delivering a result to the previous screen.]]
 +
 +
 +  * [[https://www.youtube.com/watch?v=hNzRWVr_Yvs|Bottom Nav With Multiple Back Stacks In Navigation3]]
 +    * Philipp Lackner implements a bottom navigation bar in Jetpack Compose which supports multiple back stacks.
 +  * [[https://www.youtube.com/watch?v=8jZ0O5fZ5DU|Nested Nav Graphs & Shared ViewModels With Navigation3]]
 +    * Learn how you can achieve a nested navigation for features and scope a ViewModel to multiple screens of your app.
 +
 +
 +
 +  * [[https://www.youtube.com/watch?v=M_Mq3avashE|Navigation3 Setup, Multi Pane Support, Subgraphs & DeepLinks  Compose]] a video by Jov Mit
 +
 +
 +  * [[https://proandroiddev.com/scope-of-viewmodels-in-compose-navigation-3-fb0de3aa84e5|Scope of ViewModels in Compose Navigation 3]]
 +===== Previews =====
 +  * [[https://proandroiddev.com/jetpack-compose-previews-delving-deep-into-their-inner-workings-57601ea32ebc|Jetpack Compose Previews: Delving Deep Into Their Inner Workings]]
 +    * Jansel Valentin explores how Jetpack Compose Previews work, along with a complete sample project and a few practical use cases where this knowledge proves useful. 
 +  * [[https://proandroiddev.com/designing-effective-uis-for-enhancing-compose-previews-daa8565e109f|Designing Effective UIs For Enhancing Compose Previews]]
 +    * Jaewoong Eum explores best practices for using Compose Previews and how to maximize their utilization.
 +  * [[https://www.youtube.com/watch?v=lo7POVL-6VI|Practical Tips and Tricks to Improve Your Compose Previews with István Juhos]] (video)
 +===== Theming =====
 +  * [[https://proandroiddev.com/mastering-color-theming-in-jetpack-compose-a4ac53b9b7b5|Mastering Color Theming in Jetpack Compose]] by Stefano Natali
 +  * [[https://proandroiddev.com/theming-your-app-for-the-holidays-4245f4f46a05|Theming Your App for the Holidays]] by Katie Barnett
 +    * Dynamically update your Android app theme any time you want to add some holiday cheer!
 +
 +===== Jetpack Glance (Widgets) =====
 +
 +  * [[https://developer.android.com/develop/ui/compose/glance|Jetpack Glance]]
 +
 +
 +  * [[https://android-developers.googleblog.com/2026/05/how-gratitude-widgets-boosted-user-retention-25-percent.html|Gratitude saw 25% higher retention for widget users]] (Android Developers Blog)
 +===== Camera, OCR, etc =====
 +  * [[https://www.paleblueapps.com/rockandnull/live-camera-ocr-jetpack-compose-guide/|Implementing Live Camera OCR with Jetpack Compose]]
 +  * [[https://proandroiddev.com/lets-build-an-android-camera-app-camerax-compose-9ea47356aa80|Let’s build an Android camera app! CameraX + Compose]]
 +  * Unlocking the Power of CameraX in Jetpack Compose (by Jolanda Verhoef)
 +    * Part 1: [[https://medium.com/androiddevelopers/tap-to-focus-mastering-camerax-transformations-in-jetpack-compose-440853280a6e|Tap to focus: Mastering CameraX Transformations in Jetpack Compose]]
 +    * Part 2: [[https://medium.com/androiddevelopers/getting-started-with-camerax-in-jetpack-compose-781c722ca0c4|Getting Started with CameraX in Jetpack Compose]] 
 +
 +===== Performance Best Practices =====
 +
 +  * https://developer.android.com/develop/ui/compose/performance/bestpractices
 +  * [[https://medium.com/androiddevelopers/jetpack-compose-debugging-recomposition-bfcf4a6f8d37|Jetpack Compose: Debugging Recomposition]]
 +  * [[https://www.youtube.com/watch?v=d8SXNwy6VDs|How You Get Your Compose UI From Hundreds of Recompositions to Almost Zero]] a video by Philipp Lackner
 +  * [[https://proandroiddev.com/from-recyclerview-to-lazycolumn-a-performance-optimization-playbook-for-jetpack-compose-81aa38dca1bf|From RecyclerView to LazyColumn: A Performance Optimization Playbook for Jetpack Compose]] by Sergey Drymchenko
 +    * an article compares using "old" RecyclerView and "new" LazyColumn, but it is also interesting for some tips
 +      * like:
 +        * using immutables models 
 +        * etc
 +  * [[https://victorbrandalise.com/reducing-unnecessary-recompositions-in-jetpack-compose/|Reducing Unnecessary Recompositions in Jetpack Compose]] by Victor Brandalise (12.01.2026)
 +    * useful tips
 +
 +===== Misc =====
 +  * [[https://joebirch.co/android/exploring-screenshot-testing-for-jetpack-compose/|Exploring the Compose Preview Screenshot Testing tool]]
 +  * [[https://proandroiddev.com/material3-pulltorefresh-for-jetpack-compose-ebce277b9bca|Material3 PullToRefresh for Jetpack Compose]]
 +    * Stefano Natali explores the new and improved way to implement the PullToRefresh in your Compose UI. 
 +  * [[https://theakram.com/understanding-jetpack-compose|Understanding Jetpack Compose]] by Mohammed Akram Hussain
 +    * Info about internals of Jetpack Compose
 +  * [[https://blog.zachklipp.com/centering-in-compose/|Centering in Compose]]
 +  * [[https://proandroiddev.com/how-easy-is-drag-and-drop-in-compose-e66d47ae8e5f|How easy is drag-and-drop in Compose?]]
 +  * [[https://leedwon.github.io/posts/Compose-stability-tips-and-tricks/|Compose stability tips and tricks]]
 +    * Jakub Ledwoń offers actionable tips for improving Compose performance through stability diagnostics, annotations, immutable collections, compiler config, and strong skipping mode. 
 +  * [[https://proandroiddev.com/mastering-conditional-layouts-in-jetpack-compose-the-flexible-way-8660d6e5dd0f|Mastering Conditional Layouts in Jetpack Compose: The Flexible Way]] by Akshat Divekar
 +  * State
 +    * [[https://proandroiddev.com/the-hidden-dangers-of-jetpack-compose-state-and-how-to-fix-them-with-real-examples-9f5bbd1c8e9c|The Hidden Dangers of Jetpack Compose State (And How to Fix Them With Real Examples)]] by Subhankar Bag
 +      * 1. The Innocent Beginning: “Just Use remember”
 +      * 2. Real-World Scenario 1: Forms That Don’t Lose Data
 +      * 3. Real-World Scenario 2: Lists Without Flicker or Reset
 +      * 4. Real-World Scenario 3: Navigation With Shared State
 +      * 5. Bonus: Preventing Unnecessary Recompositions
 +    * [[https://www.revenuecat.com/blog/engineering/remember-vs-remembersaveable/|remember vs rememberSaveable: deep dive into state management and recomposition in Jetpack Compose]]
 +      * ''remember''
 +        * persists values across recompositions
 +        * stores values as long as the process remain alive
 +      * ''rememberSaveable''
 +        * persists values across recompositions
 +        * serializes and stores the state in a Bundle, allowing it to survive configuration changes and process death
 +    * [[https://developer.android.com/codelabs/jetpack-compose-advanced-state-side-effects#0|Advanced State and Side Effects in Jetpack Compose]]
 +      * Codelab by Google
 +  * [[https://proandroiddev.com/eliminating-jank-in-composables-3-practical-techniques-for-smooth-jetpack-compose-ui-6c66d4f7c4f4|Eliminating Jank in Composables: 3 Practical Techniques for Smooth Jetpack Compose UI]] by Yunho Lee
 +    * Handle in the ViewModel and displaye only in the UI
 +    * Handle asynchronously via ProduceState
 +    * Handle asynchronously via LaunchedEffect
 +
 +  * [[https://blog.devgenius.io/stateflow-vs-livedata-in-modern-android-app-architecture-with-jetpack-compose-d6d19d28e55a|StateFlow vs LiveData in Modern Android App Architecture with Jetpack Compose]] by Reza Ramesh
 +===== Examples =====
 +  * [[https://developer.android.com/jetpack/compose/samples|Jetpack Compose Samples]]
 +    * https://github.com/android/compose-samples/tree/main - corresponding Github repo
 +  * https://github.com/android/compose-samples/tree/main/Jetchat
 +  * https://github.com/PacktPublishing/Android-UI-Development-with-Jetpack-Compose-Second-Edition
 +    * examples of book "Android UI Development with Jetpack Compose" by Thomas Künneth
 +  * https://github.com/skydoves/pokedex-compose
 +    * Pokedex Compose demonstrates modern Android development with Jetpack Compose, Hilt, Coroutines, Flow, Jetpack (Room, ViewModel), and Material Design based on MVVM architecture.
 +
 +===== Libraries =====
 +
 +  * https://composelibraries.com/ - libraries list
 +
 +  * [[https://github.com/JohannRosenberg/Jetmagic|Jetmagic]] by Johann Rosenberg
 +    * seems to be very good documented
 +  * [[https://github.com/hi-manshu/Charty|Charty]] by Himanshu Singh
 +    * Chart Library built using Jetpack Compose and is highly customizable.
 +    * See also: 
 +      * https://thebakery.dev/88/
 +
 +  * Performance / Optimization etc
 +    * [[https://www.getyourguide.careers/posts/mastering-jetpack-compose-performance-part-2|Mastering Jetpack Compose Performance: Part 2]]
 +    * [[https://proandroiddev.com/conscious-compose-optimization-2-tackling-composition-f3e42ce3069d|Conscious Compose optimization 2: Tackling composition]] by Andrey Bogomolov
 +
 +
 +===== Tools, Plugins etc =====
 +
 +  * [[https://github.com/skydoves/compose-stability-analyzer|Compose Stability Analyzer]] - plugin for Android Studio
 +    * [[https://proandroiddev.com/compose-stability-analyzer-real-time-stability-insights-for-jetpack-compose-1399924a0a64|Compose Stability Analyzer: Real-Time Stability Insights for Jetpack Compose]]
 +===== Videos =====
 +    * [[https://www.youtube.com/watch?v=IlI6GgC_j78|How to Implement Swipe to Delete with Material3 - Android Studio Tutorial]]
 +      * In this video you'll learn how you can implement a swipe to delete gesture for LazyColumns in Jetpack Compose.
 +    * [[https://www.youtube.com/playlist?list=PL4R20SjtT0n-uJVxy4xwzr2xabnOQ-ye8|Modern Android Development]] - videos by Madona S. Wambua
 +    * [[https://www.youtube.com/watch?v=Y9GWnwi9D0I|Testing - Jetpack Compose Tips]]
 +
 +
 +
 +===== My projects to start with Jetpack Compose =====
 +  * migrate T4T to Jetpack Compose
 +    * at the moment decided to do it at first
 +      * because much other things must be also done for T4T:
 +        * target API 33/34
 +        * upgrade AdSense Libs
 +        * upgrade billing libs
 +        * ...
 +  * create new ChalkUp Client app
 +  * migrate Avril
 +  * something other?
 +