我注意到,到目前为止,所有MotionLayouts始终会捕捉到其最终状态之一,即使您在动画中途拖动视图,停止并松开鼠标。我要实现的目标是使运动布局仅对用户交互和动量起作用。如果用户放开动画的中间部分,则一旦动量用完,它应该完全停止,并且直到出现明确定义的状态(默认行为)后才继续插值。
列表,滚动视图,coordinatorlayouts都支持此“中途停止”,那么为什么不设置motionlayout?
那么,有谁知道如何冻结状态间运动布局的进度?它应该对时间轴上的任何位置都有效,因此我不想添加额外的状态,因为它需要100个状态。
答案 0 :(得分:0)
您可以使用{"_id":"5c8c170cc96b8835c06fb54f","item":"Coffee","date":"03/15/2019","notes":"1 cup","amount":"0.75","owed":"0.75","isPaid":"False","invoice_customer":"Name","__v":0}
方法设置位置,并在过渡改变或手指松开时进行设置-在OnTouch方法中的MotionEvent.ACTION_UP上。
第一个变体:
motionLayout.setProgress()
第二个变体:
motionLayout.setTransitionListener(new MotionLayout.TransitionListener() {
// Other methods
@Override
public void onTransitionChange(MotionLayout motionLayout, int i, int i1, float v) {
// v == motionLayout.getProgress();
motionLayout.setProgress(v);
}
// Other methods
});
答案 1 :(得分:0)
在您的onTouchUp
中添加一个OnSwipe
。 stop
可能就是您想要的。 decelerate
似乎有问题。如果停止连接到滚动视图,则stop更像是减速,因为该视图将提供自己的减速。
<OnSwipe
app:dragDirection="dragUp"
app:onTouchUp="stop"
app:touchAnchorId="@id/scrollView"
app:touchAnchorSide="top" />
在这里找到了这个:https://mikescamell.com/motionlayoutquickie-ontouchup/