gpt4 book ai didi

android - 动画 View 滑出另一个 View ,将下面的 View 推开

转载 作者:IT老高 更新时间:2023-10-28 22:15:35 27 4
gpt4 key购买 nike

我有一个按钮列表。当我按下按钮时, View 应该以向下的方式滑出按钮,如下所示:

开始:
enter image description here

中途:
enter image description here

结束:
enter image description here

我该怎么做呢?应该滑出的 View 比按钮大,所以首先将 View 隐藏在按钮后面,然后向下滑动会使 View 在按钮上方可见。那不应该发生。

关于如何解决这个问题的任何想法或示例?

最佳答案

我认为最简单的方法是扩展 Animation 类并覆盖 applyTransformation() 以更改 View 的高度,如下所示:

import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.LinearLayout;

public class MyCustomAnimation extends Animation {

public final static int COLLAPSE = 1;
public final static int EXPAND = 0;

private View mView;
private int mEndHeight;
private int mType;
private LinearLayout.LayoutParams mLayoutParams;

public MyCustomAnimation(View view, int duration, int type) {

setDuration(duration);
mView = view;
mEndHeight = mView.getHeight();
mLayoutParams = ((LinearLayout.LayoutParams) view.getLayoutParams());
mType = type;
if(mType == EXPAND) {
mLayoutParams.height = 0;
} else {
mLayoutParams.height = LayoutParams.WRAP_CONTENT;
}
view.setVisibility(View.VISIBLE);
}

public int getHeight(){
return mView.getHeight();
}

public void setHeight(int height){
mEndHeight = height;
}

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

super.applyTransformation(interpolatedTime, t);
if (interpolatedTime < 1.0f) {
if(mType == EXPAND) {
mLayoutParams.height = (int)(mEndHeight * interpolatedTime);
} else {
mLayoutParams.height = (int) (mEndHeight * (1 - interpolatedTime));
}
mView.requestLayout();
} else {
if(mType == EXPAND) {
mLayoutParams.height = LayoutParams.WRAP_CONTENT;
mView.requestLayout();
}else{
mView.setVisibility(View.GONE);
}
}
}
}

要使用它,请将您的 onclick() 设置如下:

int height;

@Override
public void onClick(View v) {
if(view2.getVisibility() == View.VISIBLE){
MyCustomAnimation a = new MyCustomAnimation(view2, 1000, MyCustomAnimation.COLLAPSE);
height = a.getHeight();
view2.startAnimation(a);
}else{
MyCustomAnimation a = new MyCustomAnimation(view2, 1000, MyCustomAnimation.EXPAND);
a.setHeight(height);
view2.startAnimation(a);
}
}

问候。

关于android - 动画 View 滑出另一个 View ,将下面的 View 推开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com