我想高效地添加新添加的ListView项目.我觉得这简单易行,但我弄错了一个问题:
我想播放TransitionDrawable动画,一旦完成 – 回放它.新项目将在一段时间内升级,然后它将与其他项目融合.
TransitionDrawable具有向前和向后播放动画的方法,但没有可用于同步的方法.我期望有可能为动画完成指定回调,例如:
TransitionDrawable transition = (TransitionDrawable) view.getBackground(); transition.startTransition(500,new TransitionCompleteListener(){ public void completed() { transition.reverseTransition(500); } });
但是TransitionDrawable类不支持这样的东西.
问题是:如何播放TransitionDrawable动画,当它完成时 – 立即向后播放?我有一个使用Timer类来延迟动画后向部分执行的想法,但是对于这么简单的事情,这个解决方案看起来有点太重了.
或者也许我应该使用与TransitionDrawable不同的东西?我想避免使用Property Animations,因为我想支持更旧的设备(自从Honeycomb以来PA都是可用的).
解决方法
我自己还没有真正尝试过,但是我会说你的目标也可能是老式的View动画,准确的是
tween.而不是直接操作背景drawable(假设你正在做的事情),你可以通过改变与行布局具有完全相同尺寸的View的alpha属性来创建相同的效果.然后,您可以在单个AnimationSet中指定“正常”动画及其反向,并使后者以基于第一个的延迟开始.或者,动画提供了一个
AnimationListener,您可以在第一个动画结束时连接并获得通知,然后开始反转.
查看TransitionDrawable的源代码,我还看到了使用自定义侦听器接口扩展当前实现的一些可能性.实际上实现你在问题的代码片段中说明的模式应该不难.