jetc.dev Newsletter Issue #189
This week, we look at implementing chips in fields. We get excited about Compose Multiplatform, ask “what’s the diff?” about diffing, and find ways to use custom fonts in Glance app widgets. And we explore heatmaps, palette generation, and glassmorphism.
Ooooo… What Did We Get?
Reviewing the release notes for the latest Jetpack Compose update!
Three Compose-related artifacts received updates:
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
One UI pattern involves converting words into chips that can then be clicked upon, deleted,
etc. While there is a existing library for the pattern,
you can also create something similar by using
FlowRow() and having a
at the end of the chips, as we see in this week’s highlighted Stack Overflow question.
To have content on both sides of a
Row() (or things that use a
Row(), like a
one easy solution is to use a
with a weight of 1. However, you have to be a bit careful to ensure that the
does not cause the
Row() itself to get wider. Using
can help here, as we see in this week’s highlighted Kotlinlang
#compose Slack thread.
Posts, videos, and other new information related to Jetpack Compose!
JetBrains’ Garth Gilmour announces the release of Compose Multiplatform 1.5.10.
This update supports Kotlin 1.9.20, improves iOS support, and implements a few
new Material3 components in common code, such as
Garima Jain explors diffing in the world of the lazy composable containers, where changes
to the collection get reflected in the visible items in the container. Garima starts by
RecyclerView and how it handled diffing, then continues
in a follow-on post
to see how Compose improves upon the concept.
Konstantin Klassen wanted to use
LazyColumn(), but where a sequential block
of items might visually appear as a section with a rounded rectangle effect. This requires
having each item’s background vary based on its peers (top of rounded rectangle, interior,
and bottom of the rounded rectangle). Konstantin shows how to implement that, adding
animations as well!
Arman Chatikyan ran into some challenges in using a custom font in a Glance-powered
app widget. This is not surprising, as app widgets are rendered by a third-party process,
and that process may not have the desired font. Arman addressed this by rendering
the text using the custom font onto a
Other Interesting Links
- Creating a Blurred Toolbar Background in Jetpack Compose with Kotlin
- Integrating iOS into the Fold: Generating an IPA for Compose Multiplatform Projects
- Medium: Creating a Fully Customizable Top App Bar in Android with Jetpack Compose
- Medium: Handling User Input in Jetpack Compose: Text Fields, Buttons, and Gestures
- Medium: Native Date Picker in Compose
- Medium: Picture-Perfect Code: Uploading Images to the Server with Kotlin and Jetpack Compose using a RESTful API
- Medium: Pinch Zoom in Jetpack Compose
- Medium: Recreating WhatsApp Top Bar in Jetpack Compose: Part Three
- Medium: Scaffold’s PaddingValues in Jetpack Compose
- Medium: Simplify Calendar Integration with the MonthCalendar widget library: Jetpack Glance Component
- Medium: The Ultimate Series for Building a Todo Application on Android
- Medium: UI automation test in Jetpack Compose Using UI Automator
- Medium: WebView in Jetpack Compose
- Side Effects in Jetpack Compose: Demystifying the Concept
- Text Scaling in Jetpack compose
- Unleashing The Power Of Jetpack Compose Tooling: A Comprehensive Guide
100% pure code!
- 2023-11-21: Compose/Material3/Wear Compose updates! remember()! Adaptive layouts! Compose Multiplatform in 2024! @email@example.com on BasicTextField2()! Compose Multiplatform charts! And... is TV Compose in trouble?!?
- 2023-11-14: Compose Compiler! BasicTextField2()! @firstname.lastname@example.org and animations! Optimization! @email@example.com, JetBrains, and Fleet! JetBrains and plotting! And... we collapse?!?
- 2023-11-07: Compose Multiplatform! Chips in fields! Diffing! Custom fonts in Glance app widgets! Heatmaps! PIN input! And @firstname.lastname@example.org is in a bit of a haze?!?