java - 如何在android中创建平滑的高度变化动画

标签 java android animation android-animation

我想创建平滑的高度变化动画。下面,您可以看到我当前的实现。它可以工作,但并不像我预期的那样顺利。

import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;

public class HeightAnimation extends Animation {
     private final int targetHeight;
     private final View view;
     private final int height;

     public HeightAnimation(View view, int targetHeight) {
         this.view = view;
         this.targetHeight = targetHeight;
         height = view.getHeight();
     }

     @Override
     protected void applyTransformation(float interpolatedTime, Transformation t) {
         view.getLayoutParams().height = (int) (height + (targetHeight - height) * interpolatedTime);
         view.requestLayout();
     }

     @Override
     public void initialize(int width, int height, int parentWidth,
                       int parentHeight) {
         super.initialize(width, height, parentWidth, parentHeight);
     }

     @Override
     public boolean willChangeBounds() {
         return true;
     }
 }

有没有人有更好的解决方案?也许有办法使用 ObjectAnimator?

最佳答案

我认为您应该使用 ObjectAnimator 来驱动它,而不是创建一个扩展 Animation 的类。

private void animateViewHeight(View view, int targetHeight) {
    ValueAnimator animator = ObjectAnimator.ofInt(view.getHeight(), targetHeight);

    animator.addUpdateListener(animation -> {
        LayoutParams params = view.getLayoutParams();
        params.height = (int) animation.getAnimatedValue();
        view.setLayoutParams(params);
    });

    animator.start();
}

关于java - 如何在android中创建平滑的高度变化动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51673474/

相关文章:

java - 卡经销商java gui

android - Activity 停止/关闭时音乐服务停止?

javascript - Cordova javascript 无法在模拟器上运行

ios旋转动画与CGAffineTransform Rotate

java - Anypoint Studio Maven 在错误的 java 目录中查找 tools.jar

java - com.google.gson.JsonSyntaxException : Expected BEGIN_ARRAY but was STRING

java - 使用 Java 将 RSS Feed XML 转换为 JSON 仅显示最后一个条目

android - 如何在 intent-filter 的数据标签中指定方案特定部分?

swift - 我试图用约束来动画我的取消按钮,但动画不起作用

android - 在React Native上实现滑动交互