Главный экран моего приложения содержит вид сетки изображений. Когда пользователь выбирает изображение, активность детали начинается с использования общего элемента переход, который анимирует выбранное изображение сетки на сопряженное изображение, расположенное в CardView в подробном действии.
После обновления моего подробного представления XML-макета включить координаторLayout вдоль с CollapsingToolbarLayout, переход общего элемента перемещает изображение просмотр неправильного местоположения в подробном действии (активность "enter"). структура, похоже, отражает смещение всего AppBarLayout и внутреннего CollapsingToobarLayout и оживляет приблизительную позицию изображения было бы, если бы не было CollapsingToolBarLayout над CardView, что содержит изображение целевого изображения.
Проблема может быть дублирована в приложении cheesesquare примера Chris Banes, добавив ImageView (с именем перехода) к любому из трех карт в Activity_detail.xml:
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:transitionName="sharedImage" />
а затем установите общий переход элемента в onBindViewHolder в CheeseListFragment.java следующим образом:
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mBoundString = mValues.get(position);
holder.mTextView.setText(mValues.get(position));
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
Intent intent = new Intent(context, CheeseDetailActivity.class);
intent.putExtra(CheeseDetailActivity.EXTRA_NAME, holder.mBoundString);
holder.mImageView.setTransitionName("sharedImage");
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(
getActivity(v.getContext()),
holder.mImageView,
"sharedImage");
ActivityCompat.StartActivity((MyActivity) context, intent, options.toBundle());
}
});
Glide.with(holder.mImageView.getContext())
.load(Cheeses.getRandomCheeseDrawable())
.fitCenter()
.into(holder.mImageView);
}
Если вы запустите приложение и нажмите на элемент списка сыра, вы увидите, как переходная анимация перемещает изображение в неправильное (слишком высокое) смещение в вид активности назначения. После завершения анимации изображение появится "деформировать" в правильное положение.
Любые мысли о возможных обходах очень приветствуются.