Просмотр Развернуть Анимация влияет на другие представления с помощью «animateLayoutChanges» во вложенном макете - PullRequest
0 голосов
/ 07 января 2020

Для оранжевой части я использую android:animateLayoutChanges="true" на LinearLayout с setVisibility(visible/gone) для достижения анимации расширения, но последняя TextView (вся строка) выглядит под влиянием этой анимации (она мерцает), также вся часть под оранжевой частью не двигалась вверх / вниз плавно (не выглядит анимацией вообще). Любая помощь будет оценена. Спасибо.

enter image description here

1 Ответ

0 голосов
/ 09 января 2020

Хорошо, наконец-то я нашел решение:

  1. Добавьте android:animateLayoutChanges="true" к вашему с изменением размера ViewGroup.

  2. Используйте setVisibility() для управления видимостью вашей цели View.

  3. Добавьте android:animateLayoutChanges="true" к внешнему ViewGroup из ваших будет изменено ViewGroup. Этот внешний ViewGroup должен быть тем, кто содержит все положение, которое будет изменено View.

  4. Добавить следующее код в вашем Activity до setVisibility(), rootLinearLayout - это внешний ViewGroup Я упоминал выше:

    LayoutTransition layoutTransition = rootLinearLayout.getLayoutTransition();
    layoutTransition.enableTransitionType(LayoutTransition.CHANGING);
    

Напоминание:

  1. Если вы пропустите 3-й шаг, вы получите исключение нулевого указателя.
  2. Если вы пропустите 1-й шаг, вы все равно получите хороший разверните анимацию, но при неудачном крахе вы увидите, что ваша цель View сначала внезапно исчезнет, ​​а затем ViewGroup рухнет.

Результат:

enter image description here

...