Ho la seguente situazione all'interno di un'applicazione di calcio.
Vogliamo implementare gli elementi condivisi tra tutte queste attività.Elementi condivisi multipli
Nella mia viewholder al primo Activity
per la partita ho impostato un android:transitionName
che corrisponde allo stesso transitionName sul secondo Activity
.
<!-- item_viewholder (first activity) -->
<CustomViewContainingImageViewAndTextView
android:id="@+id/item_match_hometeam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:transitionName="@string/transition_morph_match_header_homeTeam" />
<!-- header (second activity) -->
<CustomViewContainingImageViewAndTextView
android:id="@+id/item_match_hometeam_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:transitionName="@string/transition_morph_match_header_homeTeam" />
avvio il secondo Activity
con
final String awayTeamTransition = activityContext.getString(R.string.transition_morph_match_header_awayTeam);
final String homeTeamTransition = activityContext.getString(R.string.transition_morph_match_header_homeTeam);
final ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
activityContext,
Pair.create(homeTeam, homeTeamTransition),
Pair.create(awayTeam, awayTeamTransition));
activityContext.startActivity(intent, options.toBundle());
Ora questa transizione funziona bene, ma cosa succede se voglio avere un dettaglio ancora più profondo.
Visualizzazione delle statistiche sulla squadra selezionata e voglio anche avere una transizione condivisa?
Ho provato a impostare il transitionName
a livello di codice quando è stato fatto clic su CustomViewContainingImageViewAndTextView
sul nuovo transitionName
.
final String teamViewTransition = activityContext.getString(R.string.transition_morph_teamview_to_detail);
//teamView is the view that was clicked.
ViewCompat.setTransitionName(teamView, teamViewTransition);
final ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
activityContext,
Pair.create(teamView, teamViewTransition));
activityContext.startActivity(teamInfoActivityIntent, options.toBundle());
questo transitionName corrisponde alla ImageView
al terzo Activity
<ImageView
android:id="@+id/team_info_header_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:transitionName="@string/transition_morph_teamview_to_detail" />
Tuttavia l'enterTransition fallisce, ma l'exitTransition funziona!
Tuttavia questo interrompe l'uscita Transizione da 2 -> 1
Vista. Spero che qualcuno impieghi del tempo per capirlo.
Grazie in anticipo
Ehi amico! Mi piace la tua soluzione, tuttavia la mia imageView nella mia terza attività è in un frammento e in una panoramica di riciclaggio. Quindi dovrei dare il mio nome di transizione alla mia attività passarlo al mio frammento passarlo al mio adattatore passarlo al mio viewholder. Che fastidio ... – tim
Sì, oppure puoi salvarlo in "SharedPreferences" o nel database e quindi estrarlo nel tuo 'ViewHolder' /' Adapter'. Oppure puoi impostarlo come una variabile 'static' da qualche parte. Oppure puoi anche impostarlo come campo nel tuo modello (ad esempio, la classe 'Team', sarebbe il modo più semplice) e poi estrarre in' onBindViewHolder'. Ad ogni modo, è necessario impostarlo in runtime, perché non si sa cosa sarebbe condiviso fino a quando non verrà cliccato :) – rom4ek