RSSAmplifier

Blog

Victor Brandalise

Collecting the best of what others have already figured out. Android & Kotlin

victorbrandalise.comRSS feed ↗10 posts

Latest posts

Navigation 3 in Jetpack Compose: The Back Stack Is Just State

Most Compose navigation examples still feel like XML Navigation rewritten in Kotlin. You define destinations elsewhere, push opaque routes around, encode arguments into strings, and trust a controller to own the real state. Navigation 3 changes that model in a way that finally feels native to Compose. Google describes it as a Compose-first navigation library… Read More » Navigation 3 in Jetpack…

Building Adaptive Layouts in Jetpack Compose

Most Android apps start with one screen size in mind: a phone in portrait mode. That is fine for the first version, but it does not age well. Your app can run on phones, tablets, foldables, ChromeOS, split-screen mode, and resizable windows. The same device can also change size while your app is running. A… Read More » Building Adaptive Layouts in Jetpack Compose The post Building Adaptive Layouts…

Embedded Android Photo Picker in Jetpack Compose

The embedded photo picker is not “a custom gallery UI.” It is the system photo picker rendered inside your UI hierarchy, with the same security and privacy properties as the classic picker, because the system draws it into a dedicated SurfaceView (internally attached via SurfaceView.setChildSurfacePackage). That architectural choice is what unlocks the core product shift:… Read More » Embedded…

Reducing Unnecessary Recompositions in Jetpack Compose

Jetpack Compose is designed to be efficient, but it relies heavily on its ability to “skip” recomposition for parts of the UI that haven’t changed. When Compose cannot skip essentially static content, your app does more work than necessary, leading to dropped frames, battery drain, and UI jank. Here are 3 practical techniques to eliminate… Read More » Reducing Unnecessary Recompositions in Jetpack…

Improving your deep links with Dynamic App Links

Users expect to tap a link and land straight in-app, not going to the browser. With the new Android 15 (API level 35) arrival, Android’s App Links system has gained a powerful upgrade: Dynamic App Links. You get granular link-routing, exclusions, query-parameter rules and server-side updates, without shipping a new app version. What’s changed Previously,… Read More » Improving your deep links with…

Clipping and Masking in Jetpack Compose

Modern apps are judged as much by their polish as by their core features. Smooth micro-interactions, subtle visual cues, and expressive UI elements can make an experience feel refined. In Jetpack Compose, two key techniques to achieve this polish are clipping and masking. These concepts are rooted in graphics rendering, but Compose makes them approachable… Read More » Clipping and Masking in…

Nested Scrolling in Jetpack Compose

Nested scrolling in Jetpack Compose enables coordinated scrolling between parent and child components by propagating unconsumed scroll deltas through the hierarchy. By default, Compose’s scrollable and Lazy APIs handle nested scrolling automatically, handing off remaining scroll to ancestors when the child reaches its limit. For custom interactions, such as collapsing toolbars or synchronized…

Using movableContentOf for shared transitions in Jetpack Compose

Today we’re going to take a loot at movableContentOf and how to use it to achieve something similar to shared transitions in Jetpack Compose. In the GIF below you can see the images moving in the composable. To start wrap your code using LookaheadScope, this has to be in the tree for the animation to… Read More » Using movableContentOf for shared transitions in Jetpack Compose The post Using…

TrustedTime API: A Reliable Approach to Time Keeping in Android Apps

Today, we’ll explore the TrustedTime API, a new API introduced to ensure accurate and secure timekeeping in Android apps. It helps apps prevent time tampering, ensuring that system time remains reliable for critical operations. Why TrustedTime API? Time manipulation can lead to security vulnerabilities, affecting authentication mechanisms, digital signatures, and event logging. The TrustedTime…

Using new Camera extensions API

Today we’ll be taking a look at some new camera functionalities provided by the Camera Extensions API. It’s supported by Camera2 and CameraX. Camera2 was introduced in Android 5.0 (Lollipop), it offers deep control over the camera, letting developers adjust settings like manual focus, exposure, ISO, and capture RAW images. It’s ideal for advanced apps… Read More » Using new Camera extensions API…

Victor Brandalise · RSS Amplifier