【发布时间】:2016-06-06 13:13:37
【问题描述】:
Animation animation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
ViewGroup.LayoutParams params = slidingPane.getLayoutParams();
int calculatedHeight = expandedHeight - ((int) (expandedHeight * interpolatedTime));
if (calculatedHeight <= collapsedHeight) {
calculatedHeight = collapsedHeight;
}
params.height = calculatedHeight;
slidingPane.setLayoutParams(params);
slidingPane.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
animation.setDuration(ANIMATION_DURATION);
animation.setAnimationListener(animationListener);
slidingPane.startAnimation(animation);
SlidingPane 是一个 LinearLayout 并且它有一个 ListView 作为一个孩子。 ListView 包含每一行中的图像。
现在这段代码工作得很好,但动画不流畅。如果我从列表视图中删除图像,那么它工作正常。
我已经根据类似问题的 SO 答案尝试了以下操作 -
1. 在动画之前隐藏滑动窗格的内容,然后再次使其在动画结束时可见。它有帮助,但行为看起来很奇怪
2.在xml中设置android:animateLayoutChanges="true",但它没有任何动画
有没有办法解决这个问题?
【问题讨论】:
-
尝试在动画中设置插值器,如:animation.setInterpolator(new LinearInterpolator());
-
@Mehta 能否请您发布整个代码。我对那一行没有太多想法:)
-
@Mehta 我使用了上面提到的代码,但它的性能比我的差。
标签: android android-layout android-animation android-linearlayout