zoukankan      html  css  js  c++  java
  • 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);

            }

     

     

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

    。。

    2FillEnable = true时,FillBefore = trueFillAfter = false

    仅仅在第一帧fill

    3FillEnable = true时。FillBefore = falseFillAfter=true

    仅仅在最后一帧fill

    4FillEnable = true时,FillBefore = falseFillAfter=false

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


    好吧。

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

  • 相关阅读:
    datetime格式化 c#
    Cookie aps.net
    缓存页面 asp.net
    aps.net IIS 部署 显示404.3错误
    使用systemd管理进程,设置进程自动启动
    VS Code 生成Pack、在Nuget中添加包、在项目中添加包
    dotnet命令 new
    WPF ListView渲染性能优化
    SQL Server判断语句(IF ELSE/CASE WHEN )
    T-SQL脚本附加数据库
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6944646.html
Copyright © 2011-2022 走看看