Пример Android Проводника ArcMotion
Я пытаюсь понять демонстрационный пример из библиотеки https://github.com/bluelinelabs/Conductor.
Движение выглядит так
Это код, отвечающий за анимацию
public class ArcFadeMoveChangeHandler extends TransitionChangeHandler {
public ArcFadeMoveChangeHandler() { }
@Override
@NonNull
protected Transition getTransition(@NonNull ViewGroup container, View from, View to, boolean isPush) {
TransitionSet transition = new TransitionSet()
.setOrdering(TransitionSet.ORDERING_SEQUENTIAL)
.addTransition(new Fade(Fade.OUT))
.addTransition(new TransitionSet().addTransition(new ChangeBounds()).addTransition(new ChangeClipBounds()).addTransition(new ChangeTransform()))
.addTransition(new Fade(Fade.IN));
transition.setPathMotion(new ArcMotion());
return transition;
}
}
Откуда он знает, что движение должно быть выполнено для FAB? Как я могу выполнить движение по дуге для FAB, но установить все остальные элементы на экране в FadeOut?
1 ответ
Откуда он знает, что движение должно быть выполнено для FAB?
Посмотрите документацию для Fade
Этот переход отслеживает изменения видимости целевых представлений в начальной и конечной сценах и затухает в представлениях, когда они становятся видимыми или невидимыми.
и документация для ChangeBounds
(и другие подобные классы):
Этот переход фиксирует границы макета целевых видов до и после изменения сцены и анимирует эти изменения во время перехода.
Таким образом, Fab (и текст) не исчезают, потому что это общий элемент в демонстрационной версии проводников, и он присутствует в следующем макете с тем же "android:transitionName" в обоих макетах. Все остальное изменило видимость, поэтому оно исчезло.
Как я могу выполнить движение по дуге для FAB, но установить все остальные элементы на экране в FadeOut?
Просто удалить android:transitionName
из textView. Я думаю, что Проводник может сделать что-то под капотом (т.е. вручную добавить transitionName
), так что если удалить transitionName
не помогает, попробуйте удалить / изменить идентификаторы, чтобы они не совпадали в обоих макетах.