我想高效率地添加新添加的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/