簡體   English   中英

如何將不參與從片段 A 的共享元素轉換的視圖添加到片段 B?

[英]How to add views to Fragment B that are not involved in a shared element transition from Fragment A?

所以我有一個看起來像這樣的回收器視圖項目:過渡視圖開始

我想以這個結束Transition View End

我不斷遇到的問題是索引越界異常。 所以開始有 6 個過渡視圖,並且所有視圖都具有基於唯一 ID 的適當過渡名稱。 最終視圖有 6 個,但還有 2 個,小水和溫度計圖像。 這兩個沒有過渡名稱。 然而,它們不斷被添加到存儲過渡視圖的列表中。 以下代碼在 DefaultSpecialEffectsController.java - 第 701 行

void captureTransitioningViews(ArrayList<View> transitioningViews, View view) {
    if (view instanceof ViewGroup) {
        if (!transitioningViews.contains(view)
                && ViewCompat.getTransitionName(view) != null) {
            transitioningViews.add(view);
        }
        ViewGroup viewGroup = (ViewGroup) view;
        int count = viewGroup.getChildCount();
        for (int i = 0; i < count; i++) {
            View child = viewGroup.getChildAt(i);
            if (child.getVisibility() == View.VISIBLE) {
                captureTransitioningViews(transitioningViews, child);
            }
        }
    } else {
        if (!transitioningViews.contains(view)) {
            transitioningViews.add(view);
        }
    }
}

並且索引越界發生在這里 FragmentTranstionImpl.java - 第 176 行

void setNameOverridesReordered(final View sceneRoot,
        final ArrayList<View> sharedElementsOut, final ArrayList<View> sharedElementsIn,
        final ArrayList<String> inNames, final Map<String, String> nameOverrides) {
    final int numSharedElements = sharedElementsIn.size();
    final ArrayList<String> outNames = new ArrayList<>();

    for (int i = 0; i < numSharedElements; i++) {
        final View view = sharedElementsOut.get(i);
        final String name = ViewCompat.getTransitionName(view);
        outNames.add(name);
        if (name == null) {
            continue;
        }
        ViewCompat.setTransitionName(view, null);
        final String inName = nameOverrides.get(name);
        for (int j = 0; j < numSharedElements; j++) {
            if (inName.equals(inNames.get(j))) {
                ViewCompat.setTransitionName(sharedElementsIn.get(j), name);
                break;
            }
        }
    }

是否可以添加兩個小圖標和一般的任何視圖,而它們不在 Fragment A 的回收器視圖中的起始過渡視圖中?

這是 Fragment 中的一個錯誤,專門在Fragment 1.3.5 中修復。 您需要升級到該版本。

implementation "androidx.fragment:fragment:1.3.5"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM