У меня есть следующая ситуация внутри приложения для футбола.
Мы хотим реализовать общие элементы между всеми этими действиями.Несколько общих элементов
В моем viewholder на первом Activity
на матч Я поставил android:transitionName
, который соответствует одному и тому же transitionName на втором 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" />
я начинаю второй Activity
с
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());
Сейчас этот переход прекрасно работает, но что, если я хочу иметь еще более глубокую детализацию.
Отображение статистики о выбранной команде, и я тоже хочу иметь общий переход?
Я попытался установить transitionName
программно, когда CustomViewContainingImageViewAndTextView
был нажат на новый 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());
это transitionName соответствует ImageView
на третьем 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" />
Однако enterTransition не удается, но exitTransition работает!
Однако это прерывает выход из перечня от 2 -> 1
Взгляд. Надеюсь, кому-то понадобится время, чтобы понять это.
Заранее спасибо
Эй, парень! Мне нравится ваше решение, однако мой ImageView в моем третьем действии находится в фрагменте и в recyclerview. Поэтому я должен был бы передать свое имя перехода в свою деятельность, передав его моему фрагменту, передав его моему адаптеру, передав его моему наблюдателю. Какая проблема ... – tim
Да, или вы можете сохранить его в 'SharedPreferences' или в базе данных, а затем извлечь его в свой' ViewHolder'/'Adapter'. Или вы можете установить его как переменную 'static' где-нибудь. Или вы даже можете установить его как поле в своей модели (т. Е. Класс 'Team', это будет самый простой способ), а затем извлечь его в' onBindViewHolder'. В любом случае, вам нужно установить его во время выполнения, потому что вы не знаете, что будет использоваться до тех пор, пока оно не будет нажато :) – rom4ek