如何在将动画设置为0dp之后将视图恢复为“wrap_content”的高度?

时间:2014-04-29 12:09:46

标签: android animation layout

我有一个TextView,我想要设置一个动画。 最初,TextView设置为visibility = GONE,高度为wrap_content。当用户执行特定操作时,TextView将设置为可见。几秒钟后,我想将TextView的高度从它的wrap_content高度设置为0dp。我没有任何问题。我的问题出现在动画结束时。动画完成后,我将TextView设置回visibility = GONE并尝试将TextView的高度重置为wrap_content,但高度似乎没有变化。

我尝试将TextView的布局参数设置回wrap_content的高度,然后使TextView无效,但这不起作用。

知道如何去做吗?

以下是我目前正在制作动画的方式:

Animation slideUp = new Animation() {
    {
        setDuration(1000);
        setAnimationListener(new Animation.AnimationListener() {                
            @Override
            public void onAnimationStart(Animation animation) { }

            @Override
            public void onAnimationRepeat(Animation animation) { }

            @Override
            public void onAnimationEnd(Animation animation) {
                LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTxtTimerSet.getLayoutParams();
                lp.height = LinearLayout.LayoutParams.WRAP_CONTENT;
                mTxtTimerSet.setVisibility(View.INVISIBLE);
                mTxtTimerSet.setLayoutParams(lp);
                mTxtTimerSet.invalidate();
                mTxtTimerSet.setVisibility(View.GONE);
            }
        });
    }

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mTxtTimerSet.getLayoutParams();
        lp.height = mTxtTimerSet.getHeight() - ((int) (mTxtTimerSet.getHeight() * interpolatedTime));
        mTxtTimerSet.setLayoutParams(lp);
    }
};

mTxtTimerSet.startAnimation(slideUp);

由于

1 个答案:

答案 0 :(得分:0)

动画结束后如何检查TextBox的高度?也许您想使用visibility=View.INVISIBLE代替View.GONE?如果您想再次为其设置动画,可以尝试在动画开始时指定宽度。