Переход активности не выполнен (Lollipop)
Я оживляю переход между активностью X и активностью Y.
X содержит список с изображениями, а при щелчке изображения расширяется и "увеличивается" в действии Y.
Таким образом, это изображение является элементом общего доступа между X и Y. Я установил его свойство transitionName
в макетах XML.
Это код, начинающийся с активности Y:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, clickedImage, clickedImage.getTransitionName());
startActivityForResult(intent, OPEN_PICTURE_REQUEST, options.toBundle());
До сих пор все работает нормально. Тем не менее, я также хочу анимировать макет активности Y при вводе.
Для этого я определил переход в файле XML (picture_enter.xml):
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:transitionOrdering="together">
<transition
class="android.transition.Explode"
android:startDelay="200">
<targets>
<target android:targetId="@+id/top_toolbar_container" />
</targets>
</transition>
</transitionSet>
Наконец, в onCreate
активности Y я инициализирует переход:
TransitionInflater inflater = TransitionInflater.from(this);
Transition transition = inflater.inflateTransition(R.transition.picture_enter);
Window window = getWindow();
window.setEnterTransition(transition);
Но это никогда не выполняется. Эффект "масштабирования" изображения работает только по своему усмотрению. Я также попытался определить переход программно.
Любые предложения?
Ответы
Ответ 1
Вы должны использовать тему приложения со следующими тегами окна:
<style name="CustomActionBarTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- enable window content transitions -->
<item name="android:windowContentTransitions">true</item>
<!-- enable overlapping of exiting and entering activities -->
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
</style>
В файле Mainfest внутри тега приложения используется Android: тема = "@стиль/CustomActionBarTheme"
В действии X,
ActivityOptionsCompat options = ActivityOptionsCompat
.makeSceneTransitionAnimation(activity,img_pic, "img_pic");
где "img_pic" - это android: transitionName = "img_pic" в обоих файлах макета Activity X и Activity Y.
ПРИМЕЧАНИЕ: android: значения переходаName должны быть одинаковыми для перехода.
Открытие операции Y с помощью ActivityOptionsCompat или ActivityOptions,
Intent intent = new Intent(context,Activity_Y.class);
startActivity(intent, options.toBundle());