January 26-February 01, 2017
Want to contribute? Check out our Android and iOS milestones, many of which are ready for someone to take ownership of. Also check out our newbie-friendly tasks.
This weekly update captures what changed in a given week across the Material Motion ecosystem.
Check out current focus to see what we’re working on next.
Check out stability to learn about the current state of each feature.
Meta
Android platform
🎉 Formalized Interaction type. Enable constraints via chaining of operators.
🎉 Implemented directly manipulable interactions.
The source:
runtime.addInteraction(new DirectlyManipulable(), target);
You can add a lockToYAxis
constraint:
The source:
DirectlyManipulable interaction = new DirectlyManipulable();
interaction.draggable.compose(lockToYAxis(0f));
runtime.addInteraction(interaction, target);
Apple platforms
📝 Continued improvements to L1/L2 APIs.
🎉 Implemented an interactive “push back” transition example.
The source:
func willBeginTransition(_ transition: Transition, runtime: MotionRuntime) {
let bounds = transition.containerView().bounds
runtime.add(spring(back: bounds.height + transition.fore.view.layer.bounds.height / 2,
fore: bounds.midY,
transition: transition),
to: runtime.get(transition.fore.view.layer).positionY)
runtime.add(spring(back: 1, fore: 0.95, transition: transition),
to: runtime.get(transition.back.view.layer).scale)
}
🎉 Implemented a contextual photo transition, complete with flick-to-dismiss and the ability to cancel the transition by dragging the photo back to the center of the screen.
🎉 Implemented a sticker editor interaction.
Example code:
runtime.add(DirectlyManipulable(targetView: stickerView), to: stickerView)
Web frameworks
🎉 Tappable Bottom Sheet transition working
Current state
Android platform support
Library | Build status | Coverage | Version | Issues |
---|---|---|---|---|
catalog-android | passing | 0% | 0 open | |
conventions-android | 0 open | |||
expression-android | 2 open | |||
family-direct-manipulation-android | passing | 100% | v1.2.0 | 2 open |
family-rebound-android | passing | 100% | v1.1.0 | 3 open |
family-tween-android | passing | 100% | v2.1.0 | 2 open |
gestures-android | passing | 91% | v1.0.0 | 4 open |
indefinite-observable-android | passing | 100% | v2.0.0 | 0 open |
runtime-android | passing | 95% | v6.0.1 | 13 open |
streams-android | passing | 39% | v1.0.0 | 14 open |
transitions-android | 9 open |
Apple platform support
Library | Build status | Coverage | Version | Platforms | Docs | Issues |
---|---|---|---|---|---|---|
catalog-swift | passing | 10 open | ||||
conventions-objc | 0 open | |||||
coreanimation-swift | passing | 61% | v2.0.0 | ios | 6 open | |
coreanimation-transitions-swift | passing | 84% | v1.0.0 | ios | -1% | 0 open |
direct-manipulation-swift | passing | 84% | v1.1.0 | ios | 5 open | |
indefinite-observable-swift | passing | 100% | v3.1.0 | ios / osx | 54% | 0 open |
pop-swift | passing | 42% | 21% | 6 open | ||
pop-transitions-swift | passing | 71% | v1.0.0 | ios | 0 open | |
runtime-objc | passing | 91% | v6.0.1 | ios | 100% | 16 open |
streams-swift | [-passing-]{+canceled+} | [-12%-]{+10%+} | [-2-]{+8+} open | |||
transitions-objc | passing | 48% | v1.1.0 | ios | 90% | 5 open |
Web platform support
Library | Build status | Coverage | Version | Issues |
---|---|---|---|---|
indefinite-observable-js | passing | 100% | v1.0.1 | 3 open |
material-motion-js | passing | 41 open | ||
streams-experiment-js | 1 open |
Misc libraries
Library | Build status | Coverage | Version | Issues |
---|---|---|---|---|
apidiff | passing | 86% | v1.0.0 | 11 open |
chrome-inspector | 4 open | |||
ci-staging-area | 0 open | |||
direct-web | 0 open | |||
hubot | 0 open | |||
material-motion | 37 open | |||
milemarker | 18 open | |||
sprints | 32 open | |||
starmap | 48 open | |||
sublime | 4 open | |||
tools | 100 open |
Learn more
Join us on Discord! discord.gg/ZJyGXza