Android -- Fragment动画异常Unknown animation name: objectAnimator
异常
Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator
异常代码
FragmentTransaction ft = getFragmentManager().beginTransaction();
//setCustomAnimations()必须位于replace()之前,否则效果不起所中。它的两个参数分别为enter,exit的效果。系统目前提供两个效果,分别为android.R.animator.fade_in和android.R.animator.fade_out
ft.setCustomAnimations(R.animator.slide_in_left,R.animator.slide_out_right);
ft.addToBackStack(null);
ft.replace(R.id.details,"detail");
ft.commit();
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:valueFrom="-1280"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="X"
android:duration="2000" />
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:valueFrom="0"
android:valueTo="1280"
android:valueType="floatType"
android:propertyName="X"
android:duration="2000" />
动画简单说明
实现自定义动画的类是ObjectAnimator,不仅用于fragment,也可用于view。在xml中,定义了从“from”状态到“to”状态,时间间隔为duration(毫秒),所执行的变化规则称为interpolator。最简单的interpolator是linear,即@android:interpolator/linear,从状态From到to状态是均匀变化。缺省的interpolator是accelerate_decelerate。系统提供的方式可以在源代码/data/res/interpolator中查看。android:propertyName用于动画的维度,在本例中X表示横向,根view的setX()中的参数是float,所以设置valueType为floatType。我们设置可以设置自己的维度。From设置为-1280,因为这个值对于终端设备而言,-1280个像素位可以确保从不可视的位置移入。如果我们没有设置From,系统会根据当前值来设定初始值。
如果我们要在两个或者两个以上的维度设置变化,可以使用set tag,对应为Android的AnimatorSet类,下面的例子同时设置向下和淡出效果。set有一个属性android:ordering,缺省为together,即各个维度的变化同时发生,还可以设置为sequentially依次发生。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator android:interpolator="@android:interpolator/accelerate_cubic"
android:valueFrom="1"
android:valueTo="0"
android:valueType="floatType"
android:propertyName="alpha"
android:duration="1000"/>
<objectAnimator android:interpolator="@android:interpolator/accelerate_cubic"
android:valueFrom="0"
android:valueTo="1280"
android:valueType="floatType"
android:propertyName="Y"
android:duration="1000"/>
</set>
异常分析
V4包中的Fragment对于动画的支持不完全。
在FragmentManager类中的loadAnimation方法
if (transitionStyle == 0) {
return null;
}
//TypedArray attrs = mActivity.obtainStyledAttributes(transitionStyle,
// com.android.internal.R.styleable.FragmentAnimation);
//int anim = attrs.getResourceId(styleIndex, 0);
//attrs.recycle();
//if (anim == 0) {
// return null;
//}
//return AnimatorInflater.loadAnimator(mActivity, anim);
return null;
在AnimatorInflater.loadAnimator里面处理的动画:
String name = parser.getName();
if (name.equals("objectAnimator")) {
anim = loadObjectAnimator(c, attrs);
} else if (name.equals("animator")) {
anim = loadAnimator(c, attrs, null);
} else if (name.equals("set")) {
anim = new AnimatorSet();
TypedArray a = c.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.AnimatorSet);
int ordering = a.getInt(com.android.internal.R.styleable.AnimatorSet_ordering,
TOGETHER);
createAnimatorFromXml(c, parser, attrs, (AnimatorSet) anim, ordering);
a.recycle();
} else {
throw new RuntimeException("Unknown animator name: " + parser.getName());
}
private static ObjectAnimator loadObjectAnimator(Context context, AttributeSet attrs)
throws NotFoundException { ObjectAnimator anim = new ObjectAnimator(); loadAnimator(context, attrs, anim); TypedArray a =
context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.PropertyAnimator); String propertyName = a.getString(com.android.internal.R.styleable.PropertyAnimator_propertyName); anim.setPropertyName(propertyName); a.recycle(); return anim;
}
So
在使用V4包中Fragment时,使用的切换动画效果,其动画文件中不能包含objectAnimator,Animator这类标签。如果必须要使用,请将工程中使用的V4包中Fragment相关类,换成源码中的Fragment相关类。
我是天王盖地虎的分割线
Android -- Fragment动画异常Unknown animation name: objectAnimator的更多相关文章
- Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常
在为Fragment做切换动画.启动后遇到了一个异常: Caused by: java.lang.RuntimeException: Unknown animation name: objectAni ...
- Android 属性动画(Property Animation) 全然解析 (下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38092093 上一篇Android 属性动画(Property Animatio ...
- Android 属性动画(Property Animation) 完全解析 (下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38092093 上一篇Android 属性动画(Property Animatio ...
- 通过AnimationSet 同步或一部播放多个动画 Android 属性动画(Property Animation) 完全解析 (下)
AnimationSet提供了一个把多个动画组合成一个组合的机制,并可设置组中动画的时序关系,如同时播放,顺序播放等. 以下例子同时应用5个动画: 播放anim1: 同时播放anim2,anim3,a ...
- android:Fragment动画的东西
最近很多人来Fragment动画是很感兴趣,我将是一个样本给大家看. 既然做,我会做动画以下类型: 注入弹出动画:从""进入.从"上下左右"弹出,当然,你怎么组 ...
- Android 属性动画(Property Animation) 完全解析 (上)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475 1.概述 Android提 供了几种动画类型:View Anima ...
- 【转】Android 属性动画(Property Animation) 完全解析 (上)
http://blog.csdn.net/lmj623565791/article/details/38067475 1.概述 Android提供了几种动画类型:View Animation .Dra ...
- Android 属性动画(Property Animation) 全然解析 (上)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475 1.概述 Android提供了几种动画类型:View Animat ...
- 我的Android进阶之旅------>Android之动画之Frame Animation实例
============================首先看看官网上关于Frame animation的介绍================================ 地址:http://de ...
随机推荐
- [ 原创 ]Centos 7.0下启动 Tomcat8.5.15
1.打开8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent 2.重启防火墙 firewall-cmd --relo ...
- SpringBoot静态资源目录
在web开发中,静态资源的访问是必不可少的,如:图片.js.css 等资源的访问. SpringBoot对静态资源访问提供了很好的支持,基本使用默认配置就能满足开发需求. 在传统的web项目中静态资源 ...
- 【对比分析三】CSS中 link 和@import 的区别
1). link 是 XHTML 标签,无兼容问题: @import 是在 CSS2.1 提出的,只有IE5以上才能识别. 2). 语法结构不同. link (链接式)只能放入HTML源码中,语法 ...
- Caffe2(2)----Eclipse环境中使用Caffe2
使用IDE开发深度学习的应用,可以事半功倍,Caffe2已经全面支持Python,这里介绍如何在Ubantu14.04下,利用EclipseCaffe2的二次开发或应用. 1.安装eclipse 具体 ...
- redis缓存穿透解决办法--排它锁
- Git_删除文件
在Git中,删除也是一个修改操作,我们实战一下,先添加一个新文件test.txt到Git并且提交: $ git add test.txt $ git commit -m "add test. ...
- DDos与CC攻击的简单个人理解
DDos简单来说就是向指定IP发送大量无用的数据包,造成网卡堵塞. CC理解成模拟表单提交,真实模拟业务,但量大之后也会造成网络堵塞. 参考: http://www.enkj.com/idcnews/ ...
- 移动平台的WebApp之Meta标签
对于桌面平台web布局中大家对meta标签再熟悉不过了,它永远位于 head 元素内部,对做SEO的朋友一定对meta有种特殊的感情吧,今天我们就来说说移动平台的meta标签,在移动平台meta标签究 ...
- HDU 4726 Kia's Calculation(贪心)
Kia's Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- More about STALL
http://fx.damasgate.com/more-about-stall/ In other USB classes, a sender can indicate the end of a t ...