Jolanda Verhoef
@lojanda.bsky.social
640 followers 130 following 20 posts
Android Developer Relations @Google. Hasn't touched XML layouts in years.
Posts Media Videos Starter Packs
Compose UI 1.9.0-alpha01 introduces custom bullets for annotated strings. The methods withBulletList and withBulletListItem let you set custom shapes and brushes, so the sky is the limit! What do you think about my cute todo-list bullets?

More info → android-review.googlesource.com#/q/I1d066d3d...
What's holding you back from upgrading to 1.8 at this point?
This resonated a lot, thank you so much for sharing 💚
Why this approach? We're giving you the flexibility you need. Instead of a pre-built UI, you get robust, tested state logic. This ensures your custom controls are perfectly synced with playback. Reliability of Media3 + creative freedom of Compose = 🤩
This release contains:

- PlayerSurface: Clean wrapper for Surface/Texture for easy video rendering.
- PresentationState: Smoother transitions between playlist items.
- Composable State Classes: Build your own UI controls! Play/Pause, Next/Prev, Shuffle, Repeat, and more to come!
🚀 Big news for Android devs using Jetpack Compose! Media3 just dropped version 1.6.0, and it includes a brand new artifact: media3-ui-compose! Finally, seamless and customizable video playback directly in your Compose apps. 🎬 #AndroidDev #JetpackCompose #Media3
Had to laugh out loud when I encountered this performHapticFeedback reference doc remark 🤣
Got you! Accidental clickbait haha 😆
Combining CameraX and Jetpack Compose unlocks a lot of powerful and cool UI experiences. For example - you could burst some confetti whenever a user taps to focus!

Thanks to @dionsegijn.bsky.social who wrote the awesome Konfetti library 🎊

Read more ➡️ goo.gle/3BumTaP
🚀 Did you know there's a new Compose artifact for working with CameraX?

Let me tell you all about it in a new blog post series "Unlocking the Power of CameraX in Jetpack Compose".

In part 1, I explain how to use the new artifact and show a camera preview in your app.

goo.gle/3ZOk9Nj
Getting Started with CameraX in Jetpack Compose
Part 1 — A guide to building a basic camera preview, covering setup, permissions, ViewModel creation, and UI implementation.
goo.gle
I'll raise this to see if we can change the order here somehow. I know the pain :)
Ahh that's cool! So let me try to understand; you registered your broadcast receiver in your manifest, launched a foreground service when it was called, and then in the foreground service you render Compose UI?
Did you encounter any strange effects while using Compose to draw on top of other apps?
Did you write any code using Compose for that use case? In general broadcast receivers and foreground services are a very complex area, I'm coming in from the Compose side trying to understand where they overlap.
Hey #AndroidDev folks! Is there anything related to Broadcast Receivers + Jetpack Compose + app architecture that confused you or that you thought was unclear from the docs when implementing them in your app?
Followed up anyway and indeed Android Studio / Intellij doesn't use type information for auto-complete as it requires too much processing and would make auto-complete too slow. Using smart completion will do what you need.
Reposted by Jolanda Verhoef
The latest #ComposeTip for Delightful UI has been released 🥳

In this episode, we play with a few of my favorite things: Graphics layers, BlendModes and ColorFilters 🥰

Check it out 👇
youtu.be/KawI7srRvOM?...
Graphics layers | Jetpack Compose Tips
YouTube video by Android Developers
youtu.be
Can you give a specific example so I can raise this internally?
Reposted by Jolanda Verhoef
The Jetpack Compose team is hiring in London! If you'd like to join us, see the full job posting at goo.gle/4fdrpco
Software Engineer III, Android Toolkit, Jetpack Compose - London — Google Careers
goo.gle
Ok, first post. *thinks of something interesting*

Honest question - why would one attach a broadcast receiver to an Activity context vs Application context? Docs say it's because it will be tied to the lifecycle, but then continue to say you NEED to unregister because otherwise it'll leak...