Android动画FillEnabled、FillBefore、FillAfter理解

fillBefore是指动画结束时画面停留在此动画的第一帧;
默认值为true

fillAfter是指动画结束是画面停留在此动画的最后一帧。默认值为false

但奇葩的是google还加了个FillEnable
变量,这个变量简直坑爹。。。

源码:

android.view.animation.Animation.java
854行


       if
((normalizedTime
>= 0.0f
|| mFillBefore)
&& (normalizedTime
<= 1.0f
|| mFillAfter))
{

if
(!mStarted)
{

fireAnimationStart();

mStarted
= true;

if
(USE_CLOSEGUARD)
{

guard.open("cancel or detach or getTransformation");

}

}

if
(mFillEnabled) normalizedTime
= Math.max(Math.min(normalizedTime,
1.0f),
0.0f);

if
(mCycleFlip)
{

normalizedTime
= 1.0f
- normalizedTime;

}

final
float interpolatedTime
= mInterpolator.getInterpolation(normalizedTime);

applyTransformation(interpolatedTime, outTransformation);

}

1,FillEnable
= false
时,FillBefore
和FillAfter的值将被忽略,此时FillEnable=Flase时和FillBefore
= true且FillAfter=true,且FillEnabled=true等价,也就是开始结束都会被fill坑爹。。。

2,FillEnable
= true时,FillBefore = true,FillAfter
= false

只在第一帧fill

3,FillEnable = true时,FillBefore = false,FillAfter=true

只在最后一帧fill

4,FillEnable = true时,FillBefore = false,FillAfter=false

这个控制也比较坑爹,从变量名理解以为只要FillEnable=false就好,其它当FillEnable=false时又回到第1种情况太坑爹了。。

好吧。被写这块代码的人彻底搞晕了。。。

时间: 2024-07-31 21:40:10

Android动画FillEnabled、FillBefore、FillAfter理解的相关文章

从源码角度理解android动画Interpolator类的使用

做过android动画的人对Interpolator应该不会陌生,这个类主要是用来控制android动画的执行速率,一般情况下,如果我们不设置,动画都不是匀速执行的,系统默认是先加速后减速这样一种动画执行速率. android通过Interpolator类来让我们自己控制动画的执行速率,还记得上一篇博客中我们使用属性动画实现的旋转效果吗?在不设置Interpolator的情况下,这个动画是先加速后减速,我们现在使用android系统提供的类LinearInterpolator来设置动画的执行速率

Android动画之视图动画和属性动画

Android 动画分为两大类,分别是视图动画(View Animation)和属性动画(Property Animation).对于这两种动画,都能够使用xml和代码的形式定义动画. 注:布局动画相关博客已经发布,有兴趣可跳转Android动画之布局动画 View Animation 视图动画是Android最基础的动画,在API 1中就已经加入,不需考虑兼容性,但由于其动画只是作用于视图上,而不会由该控件的属性,所以有很多的局限性. 视图动画的基类是Animation其下包含了四个直接的子类

Android动画学习——Tween Animation

目录 目录 Android动画学习 Tween Animation scale动画调节尺寸 alpha动画调节透明度 rotate动画旋转 translate动画平移 Android动画学习 android中动画分为3种: Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即是一种渐变动画. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画. Property Animation:属性动画,通过动态地改变对象的属性从而达

android 动画入门(一)

准备花一些时间研究下androd动画,因为一些酷的效果是离不开动画的,但是所有的知识都是要从最基本的讲起,只有把基础打好,学一些高级的技术或者效果才会有思路,而不会在某一基础点卡住,今天就讲下动画的入门知识, 我们知道android动画有好几种,什么属性动画,过渡动画等,这篇讲下动画最基础,在属性动画出现之前就是view 动画了, 它有二种 第一类是Tween动画,就是对view进行(旋转.平移.放缩和渐变)等动画. 第二类就是 Frame动画,就好像看电影一样,只是帧每表播放的很快,这样就感觉

Android动画最新最全详解包含Material Design动画

以前写动画也是零零种种,需要的时候就查API或找现成的,不够系统.现在通过学习将Android整个动画体系勾勒出来,做到有的放矢. 安卓框架提供了2个动画系统:属性动画(Android 3.0)和View动画.这两种动画系统都是可行的,但是,在一般情况下,属性动画是首选的方法,因为它是更灵活,提供更多的功能.除了这两个系统,你可以利用Drawable动画,它允许你一帧一个的加载显示Drawable资源.所以总体来说Android API提供了三类的动画: - Tween动画或View动画(API

Android开发艺术探索——第七章:Android动画深入分析

Android开发艺术探索--第七章:Android动画深入分析 Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是api11的新特性,在低版本无法使用属性动画,但是我们依旧有一些兼容库,OK,我们还是继续来看下详细

android 动画(1) 补间动画

android动画: 3.0以前,android支持两种动画模式,tween animation,frame animation, 3.0中又引入了一个新的动画系统:property animation, 这三种动画模式在SDK中被称为 property animation,        属性动画: view animation,   补间动画:  给出两个关键帧,通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变. (Tween animation) drawable animatio

Android 动画详解

这次主要就介绍android动画,android动画目前分为三种形式,Tween Animation 这个只能应用于view对象上面的,Drawable Animation这个是帧动画,就是类似我们有一些列的图片依次播放图片时出现的动画,Property Animation 这个是属性动画,这也是在android3.0之后引进的动画,在手机的版本上是android4.0就可以使用这个动画,下面我们主要就是针对这三种情况进行介绍. Tween Animation 这个动画在Property Ani

Android动画——View动画

一.概述 View动画共有四种效果分别是平移动画.旋转动画.缩放动画以及透明度变化,此外帧动画也属于View动画,但实现效果与前面几种有所区别. 二.View动画的种类 四种动画分别对应四个Animation的子类TranslateAnimation.RotateAnimation.ScaleAnimation.AlphaAnimation,同时也可用XML来定义动画,分别对应标签<translate> <rotate> <scale> <alpha>,在实