Подготовка изменений макета перед использованием TransitionManager.beginDelayedTransition (...) - PullRequest
0 голосов
/ 05 ноября 2018

Вопрос: Можно ли как-то отреагировать на извлечение пользы (например, щелчок), мгновенно переместив (n невидимый) вид без какой-либо анимации и оттуда анимировать его в какую-нибудь другую позицию? (API до 21, поэтому TransitionManager.endTransitions () не вариант)

Справочная информация: Я пробовал это с помощью комбинации ConstraintSet с TransitionManager.beginDelayedTransition.

Обычно положение любого оператора в итеративном языке имеет значение. Не так с TransitionManager.beginDelayedTransition (...). Если я напишу

// Preq: button is pinned to START,TOP and END of parent and has a fixed width and height!
// change should not be animated (button goes to mid of screen)
ConstraintSet set = new ConstraintSet();
set.clone(layout);
set.connect(buttonID, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
set.connect(buttonID, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
set.applyTo(layout);
// this change below should be animated (button goes from mid to bottom of screen)
TransitionManager.beginDelayedTransition(layout);
ConstraintSet setPast = new ConstraintSet();
setPast.clone(layout);
setPast.clear(buttonID, ConstraintSet.TOP);
setPast.applyTo(layout);

в OnClickListener для этой кнопки, я бы предположил, что первая замена макета будет выполнена без какой-либо анимации. И после этих компоновок снимок макета будет использоваться для дальнейшей анимации. Это должно сделать кнопку (висящую на верхней границе экрана) мгновенно всплывающей в середине экрана, чтобы оживить ее путь вниз. К сожалению, это не тот случай, и кнопка скользит вниз сверху вниз. Мои тесты заставляют меня предположить, что позднее applyTo объединяется с первым.

PS: Это всего лишь игрушечный пример, мне нужна эта механика для перемещения (невидимых) видов в рамках подготовки к анимации, запускаемой щелчком пользователя (в зависимости от его положения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...