0

我正在研究 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,亨利

4

1 回答 1

0

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

动画完成后,就可以真正将其删除。

所以它不会立即删除这些视图。

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

于 2013-05-08T04:19:50.140 回答