0

我正在尝试在我的LinearLayoutthrough上执行平滑过渡(展开/折叠) Animation。这是我用于动画的代码:

Animation anim = new Animation(){
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t){
        super.applyTransformation(interpolatedTime, t);
        layout.getLayoutParams().height = (int)(84*interpolatedTime);
        layout.requestLayout();
    }
};

问题是展开/折叠动画效果很好,但是一旦动画完成,布局本身就无法正确显示。下面的灰色渐变块是它的样子(而不是 textview 和 edittext):

布局渲染不当

即使我在打电话layout.requestLayout();,但它仍然不会在每个 interpolatedTime 时间刷新布局图。我在这里缺少什么吗?

PS我在设置高度时使用84的原因是因为我知道我的布局的渲染高度并且它仅在测试/调试过程中静态定义。

4

1 回答 1

1

我想我已经想通了!关键答案是将您的视图高度设置LayoutParams.WRAP_CONTENTinterpolatedTime时间等于1。例如:

if(interpolatedTime == 1)
     layout.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
else
     layout.getLayoutParams().height = (int)(84 * interpolatedTime);

注意:这里 84 是我的视图的高度,实际上它应该使用动态检索layout.getMeasuredHeight()

于 2013-02-17T04:50:27.117 回答