November 17-November 23, 2016
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.
People involved in this sprint
What has changed
Legend:
- ๐: something launched! Click to view the release notes.
- ๐: something was worked on.
Tech stack | Starmap | Apple | Android | Web |
---|---|---|---|---|
Runtime | ย | ๐ | ย | ๐ |
Interactions | ย | ย | ย | ย |
Transitions | ๐ | ๐ | ย | ย |
Serialization | ย | ย | ย | ย |
Motion language | Starmap | Apple | Android | Web |
ArcMove | ย | ย | ย | ย |
AppliesVelocity | ๐ | ๐ | ย | ย |
ChangeAnchorPoint | ย | ย | ย | ย |
DirectlyManipulable | ย | ย | ๐ | ย |
Draggable | ย | ย | ๐ | ๐ |
PausesSpring | ๐ | ๐ | ๐ | ย |
Pinchable | ย | ย | ๐ | ย |
RemoveSpring | ย | ย | ย | ย |
Rotatable | ย | ย | ๐ | ย |
SpringTo | ย | ย | ย | ๐ |
Tween | ย | ย | ย | ๐ |
TransitionSpring | ย | ย | ย | ย |
TransitionTween | ย | ย | ย | ย |
Interactions | Starmap | Apple | Android | Web |
Color interpolation | ย | ย | ย | ย |
Parallax scrolling | ย | ย | ย | ย |
Sentence builder | ย | ย | ย | ย |
Sparkle Dialog | ย | ย | ย | ย |
Photo transition | ย | ๐ | ย | ย |
Starmap
Updates to AppliesVelocity
and PausesSpring
due to iterations on photo transition example.
Android platform
๐ Direct manipulation Published 1.0.0. View the release notes.
๐ Direct manipulation ScaleGestureRecognizer to track span, RotateGestureRecognizer to track angle. Pinchable and Rotatable plans. Multi-touch support.
๐ Direct manipulation Anchor point adjustment so fingersโ centroid is always untransformed.
๐ Direct manipulation Track velocity of centroid position for drag, span for scale, and angle for rotate.
๐ Direct manipulation Remixer integration.
๐ Direct manipulation DirectlyManipulable plan composes out to Draggable, Pinchable, and Rotatable.
Apple platforms
๐ Runtime Published v6.0.1. View the release notes.
๐ Runtime is now synced internally.
๐ Runtime internals have been significantly reworked and simplified. Unit test tools will soon be available for dependent libraries.
๐ CoreAnimation Working on block-based animation API. This feature will greatly improve the ability for existing code bases to move to Material Motion. View the diff.
Example UIKit code:
self.squareView!.alpha = 0
UIView.animate(withDuration: 1) {
self.squareView!.alpha = 1
}
Equivalent Material Motion code (simply a replacement of UIView.animate
with runtime.tween
):
squareView.alpha = 0
runtime.tween(withDuration: 1) {
squareView.alpha = 1
}
๐ CoreAnimation Working on block-based animation API. This feature will greatly improve the ability for existing code bases to move to Material Motion. View the diff.
๐ CoreAnimation Built a demo of a scroll-view-driven animation using the Timeline:
let tween = Tween("transform.rotation.z", duration: 200, values: [0, M_PI])
tween.timeline = timeline
runtime.addPlan(tween, to: squareView.layer)
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let offset = scrollView.contentOffset.y + scrollView.contentInset.top
timeline.scrubber?.timeOffset = abs(TimeInterval(offset))
}
๐ CoreAnimation transitions Published v1. View the release notes.
Includes the TransitionTween
motion language term.
๐ POP Published v2 and v2.1. View the v2 release notes. View the v2.1 release notes.
Includes the PausesSpring
and AppliesVelocity
motion language terms.
Example describing a โtossable elementโ interaction:
runtime.addPlans([
// Allow the element to be dragged.
Draggable(withGestureRecognizer: pan),
// Always be anchored to the provided position.
SpringTo(position, destination: anchoredPosition),
// Pauses the spring simulation while the gesture recognizer is active.
PausesSpring(position, whileActive: pan),
// Feeds the pan gesture recognizer's velocity into the spring on gesture completion.
AppliesVelocity(position, onCompletionOf: pan)
], to: layer)
๐ POP Working on block-based API for generating springs. View the diff. Example:
let configuration = SpringTo.defaultConfiguration
configuration.friction = sqrt(4 * configuration.tension) * 0.5
runtime.springTo(withConfiguration: configuration) {
circle.position = gestureRecognizer.location(in: view)
}
๐ POP transitions Published v1. View the release notes.
Includes the TransitionSpring
motion language term.
๐ Transitions Landed the Photo Transition demo. View the diff.
Latest demo showing a fully functional โflick-to-dismissโ interaction on the photo. Note that velocity from the gesture feeds into the spring simulation:
Web frameworks
๐ WebAnimations Iterating on Tween implementation. View the diff.
๐ Prototype Working prototype of SpringTo
, Draggable
, and Tween
proved out with the Runtime v1. View the codepen.
Learn more
Join us on Discord! discord.gg/ZJyGXza