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

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

截图例如以下:

我的代码例如以下:

    fragment = Fragment.instantiate(getActivity(), clz.getName());
fragment.setArguments(args);
ft.setCustomAnimations(R.animator.fragment_rotate_enter,
R.animator.fragment_rotate_exit,
R.animator.fragment_rotate_pop_enter,
R.animator.fragment_rotate_pop_exit);
ft.replace(R.id.fragment_stub, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);

我的动画文件例如以下,其它三个大同小异,就不贴出来了  :

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <objectAnimator
android:duration="1000"
android:propertyName="rotationY"
android:valueFrom="180.0"
android:valueTo="360.0"
android:valueType="floatType" />
<objectAnimator
android:duration="1000"
android:propertyName="alpha"
android:valueFrom="0.0"
android:valueTo="1.0"
android:valueType="floatType" /> </set>

对于这个异常,网上有非常多说法。但我看了下解释,都没有切中要害。在这里。我给详细讲一下原因:

第一是由于我使用了objectAnimator这个动画标签,

第二是由于Fragment我使用的是V4包中的。

原因就在这里:V4包中的Fragment对于动画的支持不全然。假设手中有V4源码的同学,能够翻出来详细看看——在FragmentManager类中的loadAnimation方法。我这里就直接贴图了:

标记处的那个位置。就是关键代码。

在这里面才会处理与objectAnimator相关的标签,如截图所看到的:

所以,才会造成标题上那个异常。

这里我再延伸一些内容:那么V4包中的Fragment支持哪些动画标签内呢?看一下V4包中源代码截图:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHl6X2ZseQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

那个错误异常。也就是这里报出来的。

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

当然也不是不能。假设你非要使用这个动画,就请使用源代码中的Fragment,它是没有凝视掉那段动画载入代码的。



小结:

在使用V4包中Fragment时,使用的切换动画效果,其动画文件里不能包括objectAnimator,Animator这类标签。

假设必需要使用,请将project中使用的V4包中Fragment相关类。换成源代码中的Fragment相关类。

最后,附上那个我要做的动画效果:一个翻牌的切换效果,是基于APIDemo改动的代码:

http://download.csdn.net/detail/xyz_fly/7576099

Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常的更多相关文章

  1. Android -- Fragment动画异常Unknown animation name: objectAnimator

    异常 Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator 异常代码 FragmentTransa ...

  2. Android编程之LayoutInflater的inflate方法详解

    LayoutInflater的inflate方法,在fragment的onCreateView方法中经常用到: public View onCreateView(LayoutInflater infl ...

  3. Android编程之LayoutInflater的inflate方法实例

    假设你不关心其内部实现,仅仅看怎样使用的话,直接看这篇就可以. 接上篇,接下来,就用最最简单的样例来说明一下: 用两个布局文件main 和 test: 当中,main.xml文件为: <?xml ...

  4. Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)

    1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...

  5. Android(java)学习笔记141:Android下的逐帧动画(Drawable Animation)

    1. 帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一 ...

  6. android编程之ExpandableListView使用总结

    ExpandableListView这个类与其他android列表形式视图是比较类似的,看源码的话,可以知道它是多种视图组合而成.今天不分析源码,只写些使用心得.   1.Button 对,没错,就是 ...

  7. Android编程之LayoutInflater的inflate方法具体解释

    LayoutInflater的inflate方法,在fragment的onCreateView方法中经经常使用到: public View onCreateView(LayoutInflater in ...

  8. Android编程之SparseArray<E>详解

    最近编程时,发现一个针对HashMap<Integer, E>的一个提示: 翻译过来就是:用SparseArray<E>来代替会有更好性能.那我们就来看看源码中SparseAr ...

  9. 平板点餐软件编程体会---记我的Android编程之路

    前言 想开发一个平板点餐系统,研究下陈江根大侠分享的一个很高水准的实例,只是个单机版无实用意义. (如需运行源码请回复联系邮箱) 实现 Mysql 数据库+Tomcat WEb服务器,使用Servle ...

随机推荐

  1. ArrayList解析

    ArrayList 属性 // 默认长度 private static final int DEFAULT_CAPACITY = 10; // 底层是以数组格式存储 private static fi ...

  2. 19、Django实战第19天:课程列表页

    从今天开始,我们将完成"公开课"课程的相关功能..... 1.把course-list.html复制到templates目录下 2.这个页面的头部.底部与之前定义的base.htm ...

  3. Proxmox VE

    Proxmox虚拟化环境是基于QEMU/KVM和LXC的开源服务器虚拟化管理解决方案.我们可以使用集成的易于使用的WEB界面或通过CLI管理虚拟机,容器,高可用集群,存储和网络. Proxmox VE ...

  4. ( 转 ) 优化 Group By -- MYSQL一次千万级连表查询优化

    概述: 交代一下背景,这算是一次项目经验吧,属于公司一个已上线平台的功能,这算是离职人员挖下的坑,随着数据越来越多,原本的SQL查询变得越来越慢,用户体验特别差,因此SQL优化任务交到了我手上. 这个 ...

  5. 1357:车厢调度(train)

    [题目描述] 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合.假设从A方向驶来的火车有n节(n≤1000),分别按照顺序编号为1,2,3,…,n.假定在进入车站 ...

  6. 浅谈Java中final,finalized,finally

    final: final可以让你控制你的成员.方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位,也是学习Java时必须要知道和掌握的关键字之一. fi ...

  7. spark checkpoint机制

    首先rdd.checkpoint()本身并没有执行任何的写操作,只是做checkpointDir是否为空,然后生成一个ReliableRDDCheckpointData对象checkpointData ...

  8. 移动端与PHP服务端接口通信流程设计(基础版)

    针对 --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行 ...

  9. Debian6 安装Kscope(也适用于Ubuntu)

    参考:http://soft.chinabyte.com/os/134/12307634.shtml kscope1.6.2在这里下载,下载后解压出kscope-1.6.2.tar.gz. 在ubun ...

  10. Tomcat部署时war和war exploded的区别

    转自徐刘根的Tomcat部署时war和war exploded区别以及平时踩得坑 一.war和war exploded的区别 在使用IDEA开发项目的时候,部署Tomcat的时候通常会出现下边的情况: ...