我有下一个代码:
public void desaparecer(final LinearLayout parent, View hijo, int espaciofinal) {
parent.removeView(hijo); //remote the view of the parent
final LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)parent.getChildAt(0).getLayoutParams(); //create the params
final int espacioIni = parent.getChildAt(0).getHeight(); //i get the height from start
ValueAnimator animator = ValueAnimator.ofInt(params.height, espaciofinal); //pass the params and the final height
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
params.height = (Integer) valueAnimator.getAnimatedValue();
parent.getChildAt(0).requestLayout(); //request
}
});
animator.setDuration(300); //set the anim duration
animator.start(); //start the animation
}
动画效果不好。这个想法是用初始高度开始动画。(这将是正确的方法)
但是,由于我不明白的原因,高度(开始动画时)传递为 0,我需要它不会破坏原始高度。
任何想法?我接受所有想法,除了 xml 来源。由于我的团队的原因,我无法使用它。
谢谢。