Shared Element Transition не работает на Android Nougat (API 25)

Проблемы с анимацией перехода Shared Element на Android 7 (Nougat)

В моем случае действие A вызывает действие B, используя переход общего элемента, и нажатие на B завершает его и показывает A. Теперь onStart A никогда не вызывается.

Работает нормально на предыдущих версиях Android.

Странное поведение. Нужна помощь


person Passiondroid    schedule 09.01.2017    source источник
comment
Пожалуйста, вставьте свой код сюда   -  person Suhayl SH    schedule 09.01.2017
comment
Я столкнулся с той же проблемой.. вы нашли решение?   -  person Katharina    schedule 06.03.2017
comment
@Katharina - Нет, я еще не нашел решения. Также, пожалуйста, ответьте здесь, если вы найдете какое-либо решение.   -  person Passiondroid    schedule 06.03.2017
comment
вроде сработало?   -  person Katharina    schedule 07.03.2017
comment
Отлично. Вы получаете событие внутри onStart()?   -  person Passiondroid    schedule 07.03.2017
comment
круто :) да - теперь вызывается onStart()   -  person Katharina    schedule 07.03.2017


Ответы (1)


Я решил проблему, определив переходы входа и выхода в коде вместо определения их в themes.xml -> я удалил следующие строки кода из themes.xml:

 <item name="android:windowEnterTransition" tools:targetApi="lollipop">
        @transition/fade
    </item>
    <item name="android:windowExitTransition" tools:targetApi="lollipop">
        @transition/fade_out
    </item>

    <item name="android:windowReturnTransition" tools:targetApi="lollipop">
        @transition/fade_out
    </item>

    <item name="android:windowSharedElementEnterTransition" tools:targetApi="lollipop">
        @transition/change_image_trans
    </item>
    <item name="android:windowSharedElementExitTransition" tools:targetApi="lollipop">
        @transition/change_image_trans_out
    </item>

    <item name="android:windowSharedElementReturnTransition" tools:targetApi="lollipop">
        @transition/change_image_trans_out
    </item>

И добавил следующие строки в мои действия (вы должны добавить onCreate перед добавлением любого контента в действие):

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        // inside your activity (if you did not enable transitions in your theme)
        getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
        // set an enter transition

        getWindow().setEnterTransition(new Explode());
        // set an exit transition
        getWindow().setExitTransition(new Explode());
    }

С помощью этого кода я просто устанавливаю переходы для активности - если вы также хотите изменить переходы контента, вам нужно вызвать getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

person Katharina    schedule 07.03.2017