Ответ 1
После долгих копаний в неправильных местах нашел ответ сам. Может помочь кому-то.
animateLayoutChanges
если включено, использует экземпляр LayoutTransition
для выполнения своей работы в ViewGroup
.
Поэтому, чтобы изменить анимацию, вы можете создать экземпляр LayoutTransition
, установить Animator
для перехода, который вам нужно изменить, а затем назначить этот экземпляр ViewGroup
помощью setLayoutTransition()
.
В моем случае результат:
Animator scaleDown = ObjectAnimator.ofPropertyValuesHolder((Object)null, PropertyValuesHolder.ofFloat("scaleX", 1, 0), PropertyValuesHolder.ofFloat("scaleY", 1, 0));
scaleDown.setDuration(300);
scaleDown.setInterpolator(new OvershootInterpolator());
Animator scaleUp = ObjectAnimator.ofPropertyValuesHolder((Object)null, PropertyValuesHolder.ofFloat("scaleX", 0, 1), PropertyValuesHolder.ofFloat("scaleY", 0, 1));
scaleUp.setDuration(300);
scaleUp.setStartDelay(300);
scaleUp.setInterpolator(new OvershootInterpolator());
LayoutTransition itemLayoutTransition = new LayoutTransition();
itemLayoutTransition.setAnimator(LayoutTransition.APPEARING, scaleUp);
itemLayoutTransition.setAnimator(LayoutTransition.DISAPPEARING, scaleDown);
ViewGroup av = (ViewGroup)v.findViewById(R.id.animated_layout);
av.setLayoutTransition(itemLayoutTransition);
Дополнительная информация в справочной документации LayoutTransition.