#android-constraintlayout #android-transitions #android-motionlayout
#android-constraintlayout #android-переходы #android-описание движения
Вопрос:
У меня есть три состояния A, B, C.
С OnSwipe
помощью I я перехожу от A к B, а затем с другим OnSwipe
от B к C.
Направления прокрутки одинаковы. Таким образом, непрерывное перетаскивание из состояния A должно в конечном итоге перейти в состояние C.
Проблема, с которой я сталкиваюсь, заключается в том, что переход не является плавным. В конце первого перехода происходит остановка. Иногда это работает плавно, когда я быстро перетаскиваю (?). Но, как правило, в середине двух переходов происходит остановка.
Есть ли какой-нибудь способ избавиться от этого зависания?
Для справки я просто тестирую образцы, предоставленные командой Google. Приведены два перехода, как показано ниже
<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>
Ответ №1:
Короткий ответ нет, но вы можете попробовать настроить motion: dragThreshold в onswipe.
Длинный ответ в точке B он оценивает, что существует другой переход, который может загрузить этот переход.
- Переключение переходов требует больших вычислительных затрат.
- Наборы ограничений должны оцениваться с помощью компоновки ограничений.
- Необходимо построить монотонные сплайны для всех движущихся объектов.
- Существует задержка, чтобы гарантировать, что перетаскивание происходит в том же направлении.
В долгосрочной перспективе мы надеемся создать набор переходов, который свяжет переходы в цепочку. Так что никакого логического разрыва нет. В среднесрочной перспективе мы рассматриваем возможность добавления «остановок нажатия» к переходам. Таким образом, вы строите из одного перехода, и он движется к этой остановке.