我正在学习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, 亨利
答案 0 :(得分:0)
在这种情况下, 它需要先做(出)动画。
动画完成后, 然后它可以被真正删除。
因此它不会立即删除这些视图。
PS。如果我错了,请纠正我。