2013-05-07 32 views
0

我正在学习StackView和AdapterViewAnimator。 并发现,在AdapterViewAnimator中,它不会直接删除子项,而是将它们放入数组中, 并在下一阶段删除。为什么AdapterViewAnimator在两个阶段中删除儿童?

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

的更多信息: 我也注意到, 由于上述设计, StackView(延伸AdapterViewAnimator) 都会有一些孩子流连忘返...... 并导致我想问问为什么。

的更多信息:下面 是代码片段,我上面提到: (从AdapterViewAnimator.showOnly(INT,布尔值))

// 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, Henry

回答

0

在这种情况下, 它需要首先完成(输出)动画。

一旦动画完成, 它可以被真正删除。

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

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