我在线性布局中有3个文本视图。按下按钮我必须隐藏其中的两个,如上图所示。现在它突然闪烁,看起来并不好看。我希望有一个“崩溃”效果,以便它慢慢上升,就像它被收缩一样。 有关如何做到这一点的任何线索?
我在XML和Tranlate动画中尝试'animateLayoutChanges',但没有一个是流畅的体验。
感谢您的帮助!
答案 0 :(得分:0)
您可以通过添加此参数来为线性布局设置动画:
android:animateLayoutChanges="true"
这仅适用于API 11 / Android 3.0。 据我所知,这是动态变化可见性的唯一简单方法。如果你想要更多自定义的东西,我不认为有更短的方法。
答案 1 :(得分:0)
对于“折叠”动画,您可以在单击文本视图时执行以下动画
TranslateAnimation collapseAnim = new TranslateAnimation(0.0f, 0.0f, 0.0f, -view.getHeight());
collapseAnim.setAnimationListener(new AnimationListener() {
//.....
@Override
public void onAnimationEnd(Animation animation) {
view.setVisibility(View.GONE);
}
});
collapseAnim.setDuration(300);
collapseAnim.setInterpolator(new AccelerateInterpolator(0.5f));
//Starts Animation
view.startAnimation(collapseAnim);
答案 2 :(得分:0)
使用此
final ViewGroup.LayoutParams lp = dismissView.getLayoutParams();
final int originalHeight = dismissView.getHeight();
ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 1).setDuration(mAnimationTime);
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
//gone dismissView
}
});
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
lp.height = (Integer) valueAnimator.getAnimatedValue();
dismissView.setLayoutParams(lp);
}
});
animator.start();