mrn*_*ver 19 layout animation android
我有一个RecyclerView用户选择一个项目.选择后,某些视图在文本之前变为可见(参见图像).我想为它的外观设置动画.

animateLayoutChanges 项目布局上的属性完美地完成了工作,除了视图外观的动画类型 - 它淡入.我希望它从0到100%大小缩放,我相信它被称为'弹出'动画.
如果我禁用animateLayoutChanges并使用XML动画,它可以工作,但附近的文本不再是动画的(它应该滑动以容纳视图及其边距的空间).它立即向右移动,然后播放动画.反向动画更糟糕,因为文本在视图消失之前会重叠视图.
所以我需要以某种方式组合默认机制和我自己的动画.如果不深入研究自定义动画,最简单的方法是什么?
mrn*_*ver 34
经过多次挖掘错误的地方后,我自己找到了答案.可能会帮助别人.
animateLayoutChanges如果启用了属性,则使用一个实例LayoutTransition来完成其工作ViewGroup.
因此,为了更改动画,您可以创建一个实例LayoutTransition,Animator为需要更改的转换设置,然后将该实例分配给ViewGroupvia 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7299 次 |
| 最近记录: |