Umano Android SlidingUpPanel-动画

dei*_*988 6 animation android panel

我正在使用以下项目:https : //github.com/umano/AndroidSlidingUpPanel

到目前为止,它的运行情况非常好,但是有一个问题:我想隐藏可滑动面板,直到按下按钮,然后该面板应以动画淡入。目前,该面板是在按下按钮时显示的,但是没有动画,而且我不知道如何实现该动画。

任何想法都将非常受欢迎!

Bar*_*ski 4

我知道你问这个问题已经过去 4 个月了,但我还是决定发布一个答案(这样其他人也许可以从中受益)。

可滑动面板的褪色相对容易。您只需在代表可滑动面板的布局上启动AlphaAnimation即可。您可能需要通过添加来禁用面板阴影

sothree:shadowHeight="0dp"
Run Code Online (Sandbox Code Playgroud)

到 xml 中的主要布局。

更有趣的是,当您想要从屏幕底部展开可滑动面板时(如果面板固定在底部)。在这种情况下,您可以使用以下代码:

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

import com.sothree.slidinguppanel.SlidingUpPanelLayout;

public class SlidingUpPanelResizeAnimation extends Animation {

    private SlidingUpPanelLayout mLayout;

    private float mTo;
    private float mFrom = 0;

    public SlidingUpPanelResizeAnimation(SlidingUpPanelLayout layout, float to, int duration) {
        mLayout = layout;
        mTo = to;

        setDuration(duration);
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        float dimension = (mTo - mFrom) * interpolatedTime + mFrom;

        mLayout.setPanelHeight((int) dimension);

        mLayout.requestLayout();
    }
}
Run Code Online (Sandbox Code Playgroud)

并通过以下方式启动动画:

SlidingUpPanelLayout slidingUpPanelLayout = (SlidingUpPanelLayout) findViewById(R.id.id_of_your_major_layout);

int slideablePanelHeight = 100;
int animationDuration = 800;

SlidingUpPanelResizeAnimation animation = new SlidingUpPanelResizeAnimation(slidingUpPanelLayout, slideablePanelHeight, animationDuration);
mSlidingLayout.startAnimation(animation);
Run Code Online (Sandbox Code Playgroud)