MotionLayout is a brand new layout that introduced with ConstraintLayout 2. It is sub-class of ConstraintLayout.It has all the properties of ConstraintLayout.
The whole trick with animating between two constraint sets that will be done for you by MotionLayout.If you have two constraint sets, it will switch between them by itself. It’s a ConstraintLayout, you can actually use the helpers. It also provides you with the ability to edit the custom attributes of the system.
You’ll notice the blue icon there. It’s changing because it’s a custom attribute in the system.ConstraintSet can handle custom attributes.
One of the other things that are done is it allows you to control on touch directly. It’ll manage your touch events by tracking the velocity of your finger and matching it to the velocity of views in the system and naturally give you a smooth transition between them via touch.
MotionLayout also supports helpers because it’s just a ConstraintLayout and they can work together and apart.
We want to move the ‘i’ into the middle of the screen. But if we look closely,there’s a bit of a problem here. You see the arrow clashes with the ‘i’.
You can fix using KeyFrame.
If you have a beginning and an end of a path, you can distort the path by adding a KeyFrame. Once we add the KeyFrame, it will avoid the path, which is pretty cool.
Now we have a motion scene. It has ConstraintSets. It has on touch KeyFrames, CustomAttributes with a little flag on your device, you can see the path of all the objects you’ve set in it. You can understand what all your views are doing on the device.
One of the nice things that support in it is nesting of constrained sets of MotionLayouts.In this particular example, We have two views being animated by a third view. They’re both constraint MotionLayouts.They’re both being driven by a third MotionLayout.The top view is just doing a fade to black. You’ll notice something else in that view. This is an animated view that was custom written that is being driven by MotionLayout because it implements an on-progress method. You can drive your own custom animation directly from MotionLayout.
One of the things it’s really good at is synchronizing motions. Anything that’s very complex, sequences of many things moving on the screen, it will handle it, and will also allow you to interact the touch.
The ability to build into the KeyCycles is oscillatory behaviors. It can vibrate and shake in various ways and you might wonder, what do we do with these KeyCycle?
In this particular example, first just unfold them with a staggered effect. But you can take one and have it roll because it’s oscillated or I can do a different effect. I could have it sort of bounce along the edge. Another typical example, you put it like doing a little shake at the end.
One of the cool things is Motion Editor. Android has built an editor for that thing. It’s part of the design surface. You’ll be able to do those edits directly in the design surface.
Create your constraints for your first ConstraintSet, switch to the second, edit the constraints for the second ConstraintSet. Once you do that, if you hit play, it will show you the animation between those two ConstraintSets.
There’s a checkbox to enable showing you the path. You could see the path.
You just position the cursor where you want it. You add the type of KeyFrame that you want to add. You can just distort the position by selection the KeyFrame and move it around on the screen.