jetc.dev Newsletter Issue #14
Published: 2020-05-19
In this issue, we look at the dev11
Compose/Compose UI release,
ConstraintLayout
, multiple options for integrating Coil for image
loading, and the death of (a) @Model
.
One Off the Stack, One Off the Slack
You’ve got questions. That’s understandable!
Asynchronous AdapterList
AdapterList
is a bit tricky to use when you are loading content
asynchronously. Stack Overflow user adneal points out some possible
workarounds.
Exceptions and Compose
Exceptions happen. How we handle them in Compose code, though, may look a bit different from how we handle them in more classic Android app development.
Composable Commentary
Posts, videos, and other new information related to Jetpack Compose!
Compose dev11
Release Notes
If you have been working with Canvas
, you may find that your API is now changed
to give you a CanvasScope
. Use drawCanvas()
to get to the actual Canvas
.
And we now have a collectAsState()
extension function for Flow
to be able
to consume one and have it update our composition when new values are emitted.
Compose UI dev11
Release Notes
There are about 30 changes in this release, including the removal of some previously-deprecated items.
Why do we need Jetpack Compose?
Pamela Hill wrote a piece outlining the pain points of the existing Android view system and how Compose addresses them.
Using ConstraintLayout
in Jetpack Compose
Himanshu Singh has the first of two articles that appeared this week examining
the Compose implementation of ConstraintLayout
and how to apply it.
Jetpack Compose ConstraintLayout
Our other post on the subject comes from Jorge Castillo,
who also demonstrates the use of ConstraintLayout
, in this case also blending
in Coil support for images, using the Accompanist library that you’ll see later
in this issue.
Early learnings in testing with Jetpack Compose
Joe Birch continues his tour of Compose, this time looking at writing automated UI tests for Compose screens.
Bottom Navigation Bar With Compose
Not to be outdone, Brian Gardner continues his series of posts on Compose, this time looking at bottom navigation.
Resource Roundup
100% pure code!
GitHub: Chris Banes - Accompanist
Google’s Chris Banes has contributed his Accompanist library to Compose developers. Right now, it offers Coil integration for image loading, and a way to apply existing Material Design Components-based theme to your Compose UIs.
GitHub: Luca992 - coil-composable
Another way to use Coil for Compose image-loading comes from this library from Luca Spinazzola.
GitHub: SkikaSD - compose-server-side
Andrei Shikov is experimenting with using Compose’s node-change-management system to power a Web app, where the server sends messages over a websocket to a client that renders them.
GitHub: square - workflow-kotlin-compose
This repo contains some experimental integration of Compose into Square’s Workflow state management system.
…And One More Thing
When Jetpack Compose first came out — back before we even had artifacts —
I filed a bug report about
@Model
not supporting val
properties.
Little did I know that several months later, that issue would be updated…
with information about @Model
being removed.
😶
According to a tweet from Leland Richardson,
this change will land in dev12
— given the publishing timetable of this
newsletter, that means next week.
So, if you have invested in @Model
in your Compose work, you may want to start
migrating to state()
or mutableStateOf()
, as Leland outlines in that
issue update and the associated Gerrit entry.
Or, you can subscribe to the Atom feed or follow Mark Murphy in the Fediverse.
Recent Issues:
- 2024-12-10: A Compose Multiplatform alpha! Hot reload! Presentation! Sprites! Calendars!
- 2024-12-03: Rebecca Franks on clipping and masking! Stefano Natali on graphicsLayer()! FunkyMuse on type-safe nav results! And... if we have enough maps, do we need to store our maps in a Map?!?
- 2024-11-26: Math! Shared element transitions! Custom modifiers! Macrobenchmark! Adapting to platform-specific design systems! And... why does wrapContentSize() not wrap my content size?!?