MotionLayout 多状态转换不流畅
MotionLayout multi state transition is not smooth
我有三种状态A,B,C.
用 OnSwipe
我从 A 到 B 然后用另一个 OnSwipe
从 B 到 C.
滑动方向相同。因此,从状态 A 连续拖动最终应该会进入状态 C.
我面临的问题是过渡不顺利。在第一个转换结束时有一个停止。有时当我快速拖动时它会顺利运行(?)。但一般情况下,两次转换中间会有卡顿。
有什么方法可以摆脱这种冻结吗?
作为参考,我只是在测试 Google 团队给出的 samples。下面给出两个转换
<Transition
motion:constraintSetStart="@id/base_state"
motion:constraintSetEnd="@id/half_people"
motion:duration="3000">
<OnSwipe
motion:dragDirection="dragRight"
motion:touchAnchorId="@id/people_pad"
motion:touchAnchorSide="right" />
</Transition>
<Transition
motion:constraintSetStart="@id/half_people"
motion:constraintSetEnd="@id/people"
motion:duration="3000">
<OnSwipe
motion:dragDirection="dragRight"
motion:touchAnchorId="@id/people_pad"
motion:touchAnchorSide="right" />
</Transition>
简短回答否,但您可以尝试调整动作:在 onswipe 中拖动阈值。
长答案
在 B 处,它评估存在另一个可以加载该转换的转换。
- 切换转换的计算量很大。
- 约束集需要通过约束布局进行评估。
- 需要构建所有移动对象的单调样条。
- 有延迟以确保拖动方向相同。
从长远来看,我们希望构建一个链接转换的 TransitionSet。
所以没有逻辑中断。
从中期来看,我们正在考虑向 Transitions 添加“点击停止”。因此,您构建了一个过渡,它会到达那个停止点。
我有三种状态A,B,C.
用 OnSwipe
我从 A 到 B 然后用另一个 OnSwipe
从 B 到 C.
滑动方向相同。因此,从状态 A 连续拖动最终应该会进入状态 C.
我面临的问题是过渡不顺利。在第一个转换结束时有一个停止。有时当我快速拖动时它会顺利运行(?)。但一般情况下,两次转换中间会有卡顿。
有什么方法可以摆脱这种冻结吗?
作为参考,我只是在测试 Google 团队给出的 samples。下面给出两个转换
<Transition
motion:constraintSetStart="@id/base_state"
motion:constraintSetEnd="@id/half_people"
motion:duration="3000">
<OnSwipe
motion:dragDirection="dragRight"
motion:touchAnchorId="@id/people_pad"
motion:touchAnchorSide="right" />
</Transition>
<Transition
motion:constraintSetStart="@id/half_people"
motion:constraintSetEnd="@id/people"
motion:duration="3000">
<OnSwipe
motion:dragDirection="dragRight"
motion:touchAnchorId="@id/people_pad"
motion:touchAnchorSide="right" />
</Transition>
简短回答否,但您可以尝试调整动作:在 onswipe 中拖动阈值。
长答案 在 B 处,它评估存在另一个可以加载该转换的转换。
- 切换转换的计算量很大。
- 约束集需要通过约束布局进行评估。
- 需要构建所有移动对象的单调样条。
- 有延迟以确保拖动方向相同。
从长远来看,我们希望构建一个链接转换的 TransitionSet。 所以没有逻辑中断。 从中期来看,我们正在考虑向 Transitions 添加“点击停止”。因此,您构建了一个过渡,它会到达那个停止点。