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