unknown animation name objectanimator

时间:2023-02-15 09:53:26


在为Fragment做切换动画,启动后遇到了一个异常:

Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator

截图如下:
[img]http://dl2.iteye.com/upload/attachment/0103/2861/fd4bd419-a0a3-371a-b49a-d325ce97a445.jpg[/img]

对于这个异常,网上有很多说法,但我看了下解释,都没有切中要害。在这里,我给具体讲一下原因:
第一是因为我使用了objectAnimator这个动画标签,

第二是因为Fragment我使用的是V4包中的。


原因就在这里:V4包中的Fragment对于动画的支持不完全。如果手中有V4源代码的同学,可以翻出来具体看看——在FragmentManager类中的loadAnimation方法。我这里就直接贴图了:
[img]http://dl2.iteye.com/upload/attachment/0103/2863/57671895-ca46-3c15-ac67-d7116e666946.png[/img]
标记处的那个位置,就是关键代码。在这里面才会处理与objectAnimator相关的标签,如截图所示:
[img]http://dl2.iteye.com/upload/attachment/0103/2866/c07feb5a-1bbc-3462-9705-4f875daca21e.jpg[/img]
所以,才会造成标题上那个异常。

这里我再延伸一些内容:那么V4包中的Fragment支持哪些动画标签内呢?看一下V4包中源码截图:
[img]http://dl2.iteye.com/upload/attachment/0103/2869/f884f49c-5df7-3419-9bad-fef012e2227a.png[/img]
那个错误异常,也就是这里报出来的。


那么,是不是就不能为Fragment切换使用objectAnimator的动画标签呢?

当然也不是不能,如果你非要使用这个动画,就请使用源码中的Fragment,它是没有注释掉那段动画加载代码的。

小结:
在使用V4包中Fragment时,使用的切换动画效果,其动画文件中不能包含objectAnimator,Animator这类标签。如果必须要使用,请将工程中使用的V4包中Fragment相关类,换成源码中的Fragment相关类。