不清楚 MotionLayout 参数

Unclear MotionLayout parameters

谁能解释一下 MotionLayout 的 onSwipe 参数 touchAnchorIdtouchAnchorSide 的作用?这是关于 touchAnchorId

的文档所说的

View that is being moved by the swipe.

这对我来说没有意义,因为在 MotionLayout 上滑动不会移动单个视图。在开始 constraintSet 和结束 constraintSet 之间滑动进度转换。我最初认为 touchAnchorId 会指定一个视图,用户必须拖动该视图才能播放动画,但事实并非如此,MotionLayout 开发团队引入了 touchRegionId 参数。我也不清楚 touchAnchorSide 应该做什么,因为在更改其值时我看不出有任何区别。

onSwipe 将进度从 0 移动到 1 方向(dragDirection=)水平(dragRight/Left/StartEnd)或垂直(dragUp/Down)

如果我将手指沿屏幕拖动 100 个像素,它从 0 移动到 1 多少? 这是大多数其他论证答案的主要问题。 没有锚点,它使用布局的全长。

但是如果你做的是过分的抽取。 您可以使用 dragScale 对其进行调整。但是多少钱?拉动可能会因约束字体而异。

很多时候您希望它表现得好像您正在拉动视图或视图的一侧。在这种情况下,您需要查看视图 (touchAnchorId) 和视图的侧面 (touchAnchorSide)

有时您想限制滑动的工作区域 在这种情况下,您可以使用 limitBoundsTo.

其余的大部分标志都是关于当您抬起手指时要做什么。 它旨在支持的所有用例中都有更多巧妙之处。