Translate Animations on lower level API(蜜梳下面)改变了按钮的绘制位置,而不是按钮物理存在于容器中的位置。所以,你自己来处理这种情况。有关这方面的更多信息,您可以参考此链接。一种方法是实际更改布局中按钮的位置(而不是通过动画)。以下是如何实现这一目标:
params = (LayoutParams) mBtn.getLayoutParams();
TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 400);
animation.setDuration(2000);
animation.setAnimationListener(mAnimationListener);
mBtn.startAnimation(animation);
....
....
private AnimationListener mAnimationListener = new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
params.topMargin = params.topMargin + 400;
mButton.setLayoutParams(params);
}
};
在这里,通过更改布局参数,我们正在更改按钮的物理位置。
在您的情况下,视图正在离开屏幕,因此您只需要在动画结束时更改按钮(View.GONE)的可见性。