Glitch beim Animieren verschachtelter Ansichten in einem gemeinsamen Element Aktivitätsübergang?

Ich habe mit den neuen APIs in Android 5.0 rumgespielt und versucht herauszufinden, ob es möglich ist, beide @ zu animiereViewGroup und eines seiner Kinder separat als sha, rote Elemente während einesAktivitätsübergang.

Die folgenden Screenshots geben ein vereinfachtes Beispiel dafür, was ich erreichen möchte:

In der ersten Aktivität ist das dunkelgraue Kästchen einViewGroup zentriert auf dem Bildschirm und das rote Kästchen ist sein KindView (Der von mir verwendete Layout-XML-Code ist zu finden.Hie). Wenn der Benutzer auf das dunkelgraue Feld klickt, sollte das dunkelgraue Feld schrittweise vergrößert werden, um den Hintergrund der zweiten Aktivität auszufüllen. Gleichzeitig sollte sich das rote Feld schrittweise skalieren und in der oberen linken Ecke der zweiten Aktivität neu positionieren.

Der Aktivitäts- und Animationscode

DasActivity code, mit dem ich den Übergang durchführe, ist einfach:

/** FirstActivity.java */
public class FirstActivity extends Activity implements View.OnClickListener {
    private View mOuterBox, mInnerBox;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
        getWindow().setSharedElementExitTransition(new ChangeBounds());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        mOuterBox = findViewById(R.id.outer_box);
        mInnerBox = findViewById(R.id.inner_box);
        mOuterBox.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Pair<View, String> outerBox = Pair.create(mOuterBox, mOuterBox.getTransitionName());
        Pair<View, String> innerBox = Pair.create(mInnerBox, mInnerBox.getTransitionName());
        Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this, outerBox, innerBox).toBundle();
        startActivity(new Intent(this, SecondActivity.class), bundle);
    }
}

/** SecondActivity.java */
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
        getWindow().setSharedElementEnterTransition(new ChangeBounds());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }
}
Das Proble

Wenn ich in der ersten Aktivität auf das dunkelgraue Kästchen klicke, beginnt der Übergang zum gemeinsam genutzten Element und das dunkelgraue Kästchen wird schön vergrößert, um den Hintergrund der zweiten Aktivität auszufüllen.Das rote Kästchen scheint jedoch überhaupt nicht zu animieren. Sobald der Übergang beginnt, ändert sich die Größe der roten Box abrupt und positioniert sich an ihrer endgültigen Position innerhalb der zweiten Aktivität, bevor die graue Box die Animation abgeschlossen hat.

Meine Frag

Ist es möglich sowohl ein @ zu animierViewGroup und eines / einige / alle seiner untergeordneten Elemente werden unabhängig voneinander als gemeinsam genutzte Elemente in einem @ angezeigActivity Überleitung? Wenn ja, was mache ich falsch und was kann ich tun, um sicherzustellen, dass auch die Ansichten der Kinder animiert sind?

Wenn Sie Probleme hatten, meinen Beschreibungen zu folgen, finden Sie den vollständigen Quellcode für dieses Beispielprojekt unter GitHub und ein lauffähiges APK steht zum Download bereitHie (Sie benötigen ein physisches Gerät oder einen Emulator mit Android 5.0, um das APK auszuführen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage