Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常
在为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改动的代码:
Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常的更多相关文章
- Android -- Fragment动画异常Unknown animation name: objectAnimator
异常 Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator 异常代码 FragmentTransa ...
- Android编程之LayoutInflater的inflate方法详解
LayoutInflater的inflate方法,在fragment的onCreateView方法中经常用到: public View onCreateView(LayoutInflater infl ...
- Android编程之LayoutInflater的inflate方法实例
假设你不关心其内部实现,仅仅看怎样使用的话,直接看这篇就可以. 接上篇,接下来,就用最最简单的样例来说明一下: 用两个布局文件main 和 test: 当中,main.xml文件为: <?xml ...
- Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)
1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...
- Android(java)学习笔记141:Android下的逐帧动画(Drawable Animation)
1. 帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一 ...
- android编程之ExpandableListView使用总结
ExpandableListView这个类与其他android列表形式视图是比较类似的,看源码的话,可以知道它是多种视图组合而成.今天不分析源码,只写些使用心得. 1.Button 对,没错,就是 ...
- Android编程之LayoutInflater的inflate方法具体解释
LayoutInflater的inflate方法,在fragment的onCreateView方法中经经常使用到: public View onCreateView(LayoutInflater in ...
- Android编程之SparseArray<E>详解
最近编程时,发现一个针对HashMap<Integer, E>的一个提示: 翻译过来就是:用SparseArray<E>来代替会有更好性能.那我们就来看看源码中SparseAr ...
- 平板点餐软件编程体会---记我的Android编程之路
前言 想开发一个平板点餐系统,研究下陈江根大侠分享的一个很高水准的实例,只是个单机版无实用意义. (如需运行源码请回复联系邮箱) 实现 Mysql 数据库+Tomcat WEb服务器,使用Servle ...
随机推荐
- 随机数问题--已知有个Random7()的函数,返回1到7随机自然数,让利用这个Random7()构造Random10()随机1~10.
Math.random()随机生成(0,1)之间的float数,Random7随机生成[1,7]之间的整数,利用Random7构造Random10的步骤: 1.生成数a:a是两次Random7的结果, ...
- 2018 ACM-ICPC 徐州网络赛
Problem A Problem B Problem C. 首先枚举那些他知道但是我不知道的数字.枚举这些的所有情况. 然后对每种情况再枚举我们都不知道的数字.求出每行每列的期望,求个最大值. 这样 ...
- 模板—字符串—Manacher
模板—字符串—Manacher Code: #include <cstdio> #include <cstring> #include <algorithm> us ...
- 【树状数组】bzoj2743 [HEOI2012]采花
http://www.cnblogs.com/proverbs/archive/2012/10/29/2745281.html (↑)这样处理之后,每次询问时,对于每种颜色,从1到其倒数第二次出现的位 ...
- scrapy初探
一 创建scrapy项目 运行命令: scrapy startproject 项目名称 目录结构 二 定义Item容器 Item是保存爬取到数据的容器,其使用方法和python字典类似,并且提供了 ...
- iOS开发——使用Autolayout弹出键盘
参考: http://segmentfault.com/q/1010000002420050 http://blog.csdn.net/qq448631961/article/details/4034 ...
- 表或视图不存在 Hibernate Oracle
曾经运行一个别人写的程序,之前连的别人的机器的数据,后来我把数据导入到本地数据库中运行,出错,如下:Hibernate: select sum(rdb_alert_0_.EVENT_COUNT) as ...
- 【转】谈基于SOA的应用系统设计和开发
注:在网上看到这篇文档,觉得写得很好,清晰实用.该博客其它文章也写得不错 地址:http://blog.sina.com.cn/s/blog_493a84550101gswn.html 现在对 ...
- HashMap深度解析(一)
HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常 开发.在很多Java的笔试题中也会被问到,最常见的,“H ...
- Oracle Process Cloud流程云实践
本篇适合对Oracle Unified BPM有一定基础的人参考,本篇也是参考Oracle A-team John Featherly的文章进行的实践. 1. 流程创建 打开cloud.o ...