滑动MotionLayout而不捕捉状态?

时间:2019-02-06 20:52:06

标签: android android-studio android-layout android-motionlayout

我注意到,到目前为止,所有MotionLayouts始终会捕捉到其最终状态之一,即使您在动画中途拖动视图,停止并松开鼠标。我要实现的目标是使运动布局仅对用户交互和动量起作用。如果用户放开动画的中间部分,则一旦动量用完,它应该完全停止,并且直到出现明确定义的状态(默认行为)后才继续插值。

列表,滚动视图,coordinatorlayouts都支持此“中途停止”,那么为什么不设置motionlayout?

那么,有谁知道如何冻结状态间运动布局的进度?它应该对时间轴上的任何位置都有效,因此我不想添加额外的状态,因为它需要100个状态。

2 个答案:

答案 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中添加一个OnSwipestop可能就是您想要的。 decelerate似乎有问题。如果停止连接到滚动视图,则stop更像是减速,因为该视图将提供自己的减速。

    <OnSwipe
        app:dragDirection="dragUp"
        app:onTouchUp="stop"
        app:touchAnchorId="@id/scrollView"
        app:touchAnchorSide="top" />

在这里找到了这个:https://mikescamell.com/motionlayoutquickie-ontouchup/