我需要实现这个东西,ListView中项目的高度会慢慢减少,当它的高度减少到0时,它就消失了。在此过程中,项目下方的剩余视图应该缓慢上升。
首先,我使用ObjectAnimator来更改' scaleY'但是项目占用的大小没有改变,当Animator结束时,ListView刷新,空矩形消失了。
ObjectAnimator oa = ObjectAnimator.ofFloat(itemView, 'scaleY', 1f, 0f);
我发现了另一种方法,我写了一个Runnable来改变项目的高度,但是我的项目中有一些子视图,比如ImageView,高度在变化,ImageView也在变化,我想这看起来不太好。
LayoutParams lp = itemView.getLayoutParams();
lp.height = newHeight;
itemView.setLayoutParams(lp);
最后,我找到了第三种方法,改变了底部'项目的值,是的,它看起来像一个高度减小的窗口,但高度没有改变,项目下方的剩余视图没有移动,直到Runnable结束并且ListView刷新。
itemView.setBottom(itemView.getTop() + newHeight);
如何解决这个问题?
答案 0 :(得分:0)
我做了类似的事情并且工作正常:
public void collapse(final View v, final int toHeight, final int toWidth) {
final int initialHeight = v.getMeasuredHeight();
Animation a = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
v.getLayoutParams().height = (int) (toHeight * interpolatedTime);
v.getLayoutParams().width = (int) (toWidth * interpolatedTime);
v.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
// 1dp/ms
a.setDuration(ANIMATION_DURATION);
a.setInterpolator(new AccelerateInterpolator());
v.startAnimation(a);
}
布局中设置的高度无法修复(put wrap_content)。希望对你有帮助!!