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 に答える