我想高效率地添加新添加的ListView项。我以为这很简单,但是我遇到了一个问题:

我想播放TransitionDrawable动画,一旦完成,请快退。新项目将被突出显示一会儿,然后它将与其余项目融合在一起。

TransitionDrawable具有向前和向后播放动画的方法,但是没有任何方法可以用于同步。我希望可以为动画完成指定回调,例如:

 TransitionDrawable transition = (TransitionDrawable) view.getBackground();
 transition.startTransition(500, new TransitionCompleteListener(){
               public void completed()
               {
                    transition.reverseTransition(500);
               }
       });

但是TransitionDrawable类不支持这样的东西。

问题是:如何播放TransitionDrawable动画,完成后立即向后播放?我曾想过使用Timer类来延迟动画向后部分的执行,但是对于这样一个简单的事情,此解决方案看起来有点繁琐。

还是我应该使用与TransitionDrawable不同的东西?我想避免使用属性动画,因为我想支持较旧的设备(并且从Honeycomb开始可以使用PA)。

最佳答案

我实际上尚未亲自尝试过,但我想说的是,使用老式的View动画(确切地说是tween)也可以实现您的目标。除了直接操纵背景可绘制对象(假设您正在执行的操作)之外,还可以通过更改尺寸与行布局完全相同的View的alpha属性来创建相同的效果。然后,您可以在单个AnimationSet中指定“正常”动画及其反向动画,并使后者以基于第一个动画的延迟开始。另外,Animation提供了一个AnimationListener,您可以 Hook 并在第一个动画结束时得到通知,然后开始反向播放。

查看TransitionDrawable的源代码,我还看到了使用自定义监听器接口(interface)扩展当前实现的一些可能性。真正实现您在问题代码段中说明的模式应该并不难。

我现在的时间有点短,所以请给我留言,以防您需要更多具体的指针(例如代码段)-然后,我将在本周末尝试寻找一些时间来帮助您。

关于android - TransitionDrawable : automatically reverse transition once it completes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8681761/

10-10 09:53