Android:扩展动画无效

时间:2014-12-08 03:12:06

标签: android animation

我正在使用以下代码为可扩展布局设置动画:

class ExpandAnimation extends Animation {
    private View _view;
    private int _startHeight;
    private int _finishHeight;

    public ExpandAnimation( View view, int startHeight, int finishHeight ) {
        _view = view;
        _startHeight = startHeight;
        _finishHeight = finishHeight;
        setDuration(500);
        System.out.println(_startHeight);
        System.out.println(_finishHeight);
    }

    @Override
    protected void applyTransformation( float interpolatedTime, Transformation t ) {
        int newHeight = (int)((_finishHeight - _startHeight) * interpolatedTime + _startHeight);
        _view.getLayoutParams().height = newHeight;
        _view.requestLayout();
    }

    @Override
    public void initialize( int width, int height, int parentWidth, int parentHeight ) {
        super.initialize(width, height, parentWidth, parentHeight);
    }

    @Override
    public boolean willChangeBounds( ) {
        return true;
    }
};

每次单击按钮时都会创建此动画。它被正确调用(检查System.out.println并打印正确的值)但是在模拟器动画中只运行15次一次。准确地说,隐藏它很有效,但扩展只能工作几次(在模拟器上,不能让它在手机上工作)。

可能是什么问题?

先谢谢

编辑:布局我正在尝试动画是FrameLayout。它具有TextView作为子项,finishHeight由textView测量高度测量。值是正确的。我也尝试在应用转换中调用textView.requestLayout()来重绘布局,但它不起作用。它有时只会扩展。如果您需要更多代码,请随时询问。

1 个答案:

答案 0 :(得分:0)

调用

((View) toExpand.getParent()).invalidate();
在startAnimation刚刚解决了我的问题之后。必须在其他设备上查看,但我认为它会起作用。