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 在动画类中不起作用的主要内容,如果未能解决你的问题,请参考以下文章