动画移动后重新绘制时Android布局重置

时间:2012-11-17 18:40:45

标签: android listview animation layout

我在片段容器中有一个listview。

列表中的每个视图都有一个手势检测器,在手势上使列表无效以进行重绘。

在项目选择之后,我将片段容器设置为屏幕的另一部分

ObjectAnimator x = ObjectAnimator.ofInt(ListLayout, "left", ListLayout.getLeft(), ListLayout.getLeft() - 336);
x.setDuration(500);
x.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
    View ListLayout = findViewById(R.id.fragment_list_container);
                          Log.d(TAG, "ListLayout x after move completed = " + ListLayout.getLeft());
}
});
x.start();

一切都很好。

但是,如果我从列表中选择了另一个项目(此时列表不应移动,因此动画未被调用),当检测到手势并且列表无效时,它会恢复到原始位置?

如果我在初始动画移动之前和之后获得左移,则返回正确的位置。

感激地收到任何帮助或见解, 滑

1 个答案:

答案 0 :(得分:0)

对于那些遇到这个问题的人来说,这仅仅是因为我使用“左”而不是翻译价值。

我最终压缩了所有内容并使用了新功能

mLayout.animate().setDuration(ANIMATE_TIME_MILLIS).translationXBy(ANIMATE_MOVE_DISTANCE);