setDuration 在动画类中不起作用

Posted

技术标签:

【中文标题】setDuration 在动画类中不起作用【英文标题】:setDuration not working in Animation class 【发布时间】:2021-10-18 01:30:52 【问题描述】:

我正在尝试使用 Animation 类为 ConstraintLayout 的高度设置动画,而 setDuration 方法似乎不起作用。高度会立即更改为所需的高度值。我在开发人员选项中看到过有关禁用动画的帖子,但这不是问题,它设置为 1x。无论如何,代码如下:

    public static void scaleUp() 

    Animation animation = new Animation() 

        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) 

            ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) profileLayout.getLayoutParams();

            // modify your layout params here
            params.height = 10;

            profileLayout.setLayoutParams(params);

        
    ;

        animation.setDuration(300); // in ms
        profileLayout.startAnimation(animation);


【问题讨论】:

【参考方案1】:
    params.height = (int)(10.0 * interpolatedTime)代替params.height = 10;。 在applyTransformation 方法的末尾附加profileLayout.requestLayout();。这用于更新屏幕上的布局。

【讨论】:

用这个得到一些有趣的结果,它至少现在有动画了。我想我应该准备好了!【参考方案2】:

可能的解决方案:

    Answered Here Medium Article About Animating

【讨论】:

感谢您的提示。我应该降低速度只是为了将其作为可能的解决方案。我已经尝试将其设置为多秒并且没有任何更改。我认为中等文章看起来很有希望,但我在代码上收到错误“语言级别'7'不支持 Lambda 表达式”:slideAnimator.addUpdateListener(animation1 -> Integer value = (Integer) animation1.getAnimatedValue(); view.getLayoutParams().height = value.intValue(); view.requestLayout(); ); 欢迎,对于“语言级别 '7' 不支持 Lambda 表达式”,请执行以下操作:***.com/a/22704620/6552901

以上是关于setDuration 在动画类中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

颤振补间基本动画在“FutureBuilder”中不起作用

为啥动画内容在 Firefox 中不起作用?

为啥我的动画在 Firefox 中不起作用?

为啥我的链接颜色关键帧动画在 Chrome 中不起作用?

动画在 api 响应成功回调中不起作用

动画在wordpress中不起作用