我有一个我想制作动画的菜单。我通过更改边距并插入新菜单来拆分菜单。当我想插入菜单时,动画是:
level3Height = level3Frame.getHeight();
final int newBottomMargin = (int)(origBottomMargin + level3Height/2);
final int newTopMargin = (int)(origTopMargin + level3Height/2);
splitUp = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) btnShopWireless.getLayoutParams();
params.bottomMargin = (int)(newBottomMargin * interpolatedTime);
btnShopWireless.setLayoutParams(params);
}
};
joinDown = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) btnShopWireless.getLayoutParams();
params.bottomMargin = (int)(origBottomMargin * interpolatedTime);
btnShopWireless.setLayoutParams(params);
}
};
splitUp.setDuration(1000);
splitUp.setInterpolator(new BounceInterpolator());
joinDown.setDuration(500);
joinDown.setInterpolator(new BounceInterpolator());
获得插入菜单的高度后,动画很好地将视图向上移动:
btnShopWireless.startAnimation(splitUp);
一切都很好!但....
当我想删除插入的级别菜单并将内容向下移动时,我使用下面的,并且动画不会发生 - 视图只是猛烈地回到原来的位置,没有平滑的运动。
btnShopWireless.startAnimation(joinDown);
我将 AnimationListeners 设置为 setVisibility 到 VISIBLE onAnimationStart,并将 setVisibility 设置为 GONE onAnimationEnd。他们正在做他们的工作,所以我知道动画正在被调用,否则在用于 joinDown 的 AnimationListeners 中永远不会出现可见性。但是动画运动倒退从未发生过。我只能动画第一个,splitUp。
任何人都知道我为了让第二个动画工作而缺少什么线索吗?