我正在使用以下代码为可扩展布局设置动画:
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()来重绘布局,但它不起作用。它有时只会扩展。如果您需要更多代码,请随时询问。
答案 0 :(得分:0)
调用
((View) toExpand.getParent()).invalidate();
在startAnimation刚刚解决了我的问题之后。必须在其他设备上查看,但我认为它会起作用。