В моем планшете планшета планшета есть сетка (RecyclerView) слева, содержащая сетку изображений, а вид сведений справа который отображает меньшую версию текущего выбранного изображения сетки, а также дополнительные текстовые представления, описывающие это изображение. Я пытаюсь выяснить, как обеспечить переход анимации с общим элементом, который будет скользить и масштабировать любое изображение с щелчком (в левом боковом фрагменте сетки) до его соответствующего местоположения в фрагменте представления деталей. Моему приложению нужен только переход «войти», потому что я не хочу, чтобы каждый выбор изображения записывался в задний стек.Как анимировать общий элемент ImageView из фрагмента ListView для фрагмента детализированного просмотра в макете макета/детали макета
Я попытался использовать стандартные общие вызовы поддержки элемент в моем OnItemClick(View view)
обработчика следующим образом:
DetailFragment detailFragment = detailFragment.newInstance(mFragmentId);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
movieDetailFragment.setSharedElementEnterTransition(
TransitionInflater.from(this).inflateTransition(
R.transition.change_image_transform));
view.setTransitionName(getString(
R.string.image_transition_name));
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.detail_container,
detailFragment,
DETAIL_FRAGMENT_TAG)
.addSharedElement(view, getString(R.string.image_transition_name))
.commit();
«Вид» переменная является ImageView, что пользователь нажал на вид сетки. Метод моего фрагмента подробно onCreate()
также содержит запись
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mImageView.setTransitionName(
getString(R.string.image_transition_name));
}
Я также использую следующий change_image_transform.xml перехода набор:
<transitionSet>
<changeImageTransform/>
<changeBounds/>
</transitionSet>
вместе с
<item name="android:windowContentTransitions">true</item>
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
Все эти настройки работают правильно для режима одиночной панели. Когда пользователь нажимает на изображение в активности вида сетки, фрагмент детали (в новом действии) заменяет вид сетки, и анимация отлично работает для сценариев ввода и возврата.
Однако в режиме с двумя панелями изображение не скользит и не масштабируется от источника в виде сетки до его назначения во вновь создаваемом фрагменте детали. Я считаю, что проблема, с которой я столкнулась, связана с тем, что исходный ImageView живет в постоянно видимом фрагменте представления сетки и, следовательно, не входит в обработку перехода анимационной среды.
В моем поиске не было четкого ответа на эту проблему, кроме одной неопределенной рекомендации использовать простую пользовательскую анимацию. Я попробовал простой TranslateAnimation (без масштабирования) точно так же, как тест, но у этого были две проблемы: он не позволил бы изображению пересечь границу фрагмента сетки и имел нежелательный побочный эффект от фактического «перемещения» изображения временное пустое место - это мое представление сетки во время анимации). В конечном счете, желаемый эффект заключается в том, чтобы увидеть слайд и масштаб изображения от источника до места назначения, не вызывая стирание исходного изображения.
Любые предложения или рекомендации были бы весьма признательны.