在错误的地方进行了许多搜寻之后,我自己找到了答案。希望能对某些人有所帮助。
animateLayoutChanges
属性如果被启用,则利用 LayoutTransition
的实例在 ViewGroup
中完成其工作。
因此,为了更改动画,您可以创建一个 LayoutTransition
的实例,为您需要更改的转换设置 Animator
,然后通过 setLayoutTransition()
将该实例分配给 ViewGroup
。
在我的情况下,结果为:
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参考文档。
(ofPropertyValuesHolder((Object) null
– 将(Object) null
替换为你的view
。 - konata