TransitionDrawable:完成后自动反向转换

use*_*567 9 android android-ui

我想高效地添加新添加的ListView项目.我认为这很简单容易,但我弄清楚了一个问题:

我想播放TransitionDrawable动画,一旦完成 - 回放它.新项目将在一段时间内升华,然后它将与其他项目融为一体.

TransitionDrawable具有向前和向后播放动画的方法,但没有可用于同步的方法.我期望有可能为动画完成指定回调,例如:

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

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

问题是:如何播放TransitionDrawable动画,当它完成时 - 立即向后播放?我有一个使用Timer类来延迟执行动画后退部分的想法,但这个解决方案对于这么简单的事情来说看起来有点太重了.

或者也许我应该使用与TransitionDrawable不同的东西?我想避免使用Property Animations,因为我想支持更旧的设备(自从Honeycomb以来PA都是可用的).

MH.*_*MH. 5

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

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

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