为什么AdapterViewAnimator会分两个阶段删除子项?

时间:2013-05-07 04:35:24

标签: android android-adapterview stackview

我正在学习StackView和AdapterViewAnimator。 并发现,在AdapterViewAnimator中, 它不会直接删除孩子, 但把它们放入一个阵列, 并确实在下一阶段删除。

有人可以解释一下这个设计的原因是什么? 为什么我不能直接删除它们?

更多信息: 我也注意到了 由于上述设计, StackView(扩展了AdapterViewAnimator) 会有一些孩子徘徊... 因为我想问为什么。

更多信息: 下面是我上面提到的代码片段: (来自AdapterViewAnimator.showOnly(int,boolean))

    // This section clears out any items that are in our active views list
    // but are outside the effective bounds of our window (this is becomes an issue
    // at the extremities of the list, eg. where newWindowStartUnbounded < 0 or
    // newWindowEndUnbounded > adapterCount - 1
    for (Integer index : mViewsMap.keySet()) {
        boolean remove = false;
        if (!wrap && (index < rangeStart || index > rangeEnd)) {
            remove = true;
        } else if (wrap && (index > rangeEnd && index < rangeStart)) {
            remove = true;
        }

        if (remove) {
            View previousView = mViewsMap.get(index).view;
            int oldRelativeIndex = mViewsMap.get(index).relativeIndex;

            mPreviousViews.add(index);
            transformViewForTransition(oldRelativeIndex, -1, previousView, animate);
        }
    }

感谢。 BR, 亨利

1 个答案:

答案 0 :(得分:0)

在这种情况下, 它需要先做(出)动画。

动画完成后, 然后它可以被真正删除。

因此它不会立即删除这些视图。

PS。如果我错了,请纠正我。