M3 expressive wavy progress indicators#380
Conversation
|
The implementation looks solid, but unless you have an urgent need for it, I'd like to hold off on this at least until Another issue I'd like to consider for this sort of thing is whether it might be better to extend the ProgressView()
#if os(iOS)
.progressViewStyle(.linear)
#elseif os(Android)
.progressViewStyle(.material3Wavy(gapSize: 2.0, amplitude: 1.0))
#endif |
|
I went with a separate modifier for two reasons. First, because wavy is a mode on top of a style; you can choose either linear-wavy or circular-wavy. ProgressView()
.progressViewStyle(.linear)
#if os(Android)
.material3WavyProgress()
#endif
ProgressView()
.progressViewStyle(.circular)
#if os(Android)
.material3WavyProgress()
#endifSecond, it means that I could set If we did it with separate ProgressView()
#if os(Android)
.progressViewStyle(.material3WavyLinear)
#else
.progressViewStyle(.linear)
#endif
ProgressView()
#if os(Android)
.progressViewStyle(.material3WavyCircular)
#else
.progressViewStyle(.circular)
#endif… and I'd have to wire that up everywhere in my entire app. I think
|
Fixes #379
This PR upgrades us to
androidx-material31.5.0-alpha16, so we can access the new M3 Expressive stuff.I've added a new
.material3WavyProgress()modifier. You can pass it no arguments, and it will do the right thing, or you can configure the amplitude, wavelength, and "wave speed"Skip Pull Request Checklist:
swift testNo
skip-fuse-uichanges required.M3 expressive wavy progress indicators skipapp-showcase#85
Cursor generated a first draft, which I manually cleaned up and documented. I manually tested the new progress indicators in the ProgressViewPlayground in both the Lite and Fuse showcases.
Before / After

Screen_recording_20260401_200124.webm