java 使用材质动画更改视图的大小(展开或折叠)。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 使用材质动画更改视图的大小(展开或折叠)。相关的知识,希望对你有一定的参考价值。

package com.example.rahul.viewexpandanimation;

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

/**
 * Created by rahul on 7/11/15.
 */
public class SizeChangeAnimation extends Animation {

    private int startHeight;
    private int deltaHeight;

    private int startWidth;
    private int deltaWidth;

    private View view;

    public SizeChangeAnimation(View view) {
        this.view = view;
    }

    public void setHeights(int start, int end) {
        this.startHeight = start;
        this.deltaHeight = end - this.startHeight;
    }

    public void setWidths(int start, int end) {
        this.startWidth = start;
        this.deltaWidth = end - this.startWidth;
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        if (startHeight != 0) {
            if (deltaHeight > 0) {
                view.getLayoutParams().height = (int) (startHeight + deltaHeight * interpolatedTime);
            } else {
                view.getLayoutParams().height = (int) (startHeight - Math.abs(deltaHeight) * interpolatedTime);
            }
        }

        if (startWidth != 0) {
            if (deltaWidth > 0) {
                view.getLayoutParams().width = (int) (startWidth + deltaWidth * interpolatedTime);
            } else {
                view.getLayoutParams().width = (int) (startWidth - Math.abs(deltaWidth) * interpolatedTime);
            }
        }

        view.requestLayout();
    }
}

以上是关于java 使用材质动画更改视图的大小(展开或折叠)。的主要内容,如果未能解决你的问题,请参考以下文章

水平 ScrollView (SwiftUI) 中的动画展开/折叠组

AngularJs ul 使用幻灯片动画展开/折叠

动画视图并中途停止

如何在 SwiftUI 中制作“显示”式的折叠/展开动画?

展开和折叠动画在 ios6 中不起作用

Xcode 单击时折叠视图或元素