Переходы активности Android — Window.excludeTarget() предотвращает переходы дочерних представлений

Я играю с новым Transition Api и хотел бы добиться хорошего перехода между двумя действиями. Оба действия содержат AppBar с вкладкой ViewPager.

Когда я запускал переход в первый раз, AppBar исчезал и снова появлялся между двумя переходами активности, так что казалось, что он мигает:

введите здесь описание изображения введите здесь описание изображения

Чтобы решить эту проблему, я попытался исключить AppBar из перехода активности, вызвав transition.excludeTarget():

// in onCreate() of the calling activity
Transition transition = new Fade();
transition.excludeTarget(mAppBarLayout, true);
getWindow().setExitTransition(transition);
getWindow().setReenterTransition(transition);

// in onCreate() of the called activity
Transition transition = new Fade();
transition.excludeTarget(mAppBarLayout, true);
getWindow().setEnterTransition(transition);
getWindow().setReturnTransition(transition);

Этот код решил проблему мерцания, но добавил новую: больше нет плавной анимации для ViewPager Tabs:

введите здесь описание изображения

Вот как оба макета выглядят в целом:

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:background="@color/toolbar_background"
        >
        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:titleTextColor="@color/toolbar_icons"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/Base.ThemeOverlay.AppCompat.Dark"
            />
        <com.ogaclejapan.smarttablayout.SmartTabLayoutLight
            android:layout_width="match_parent"
            android:layout_height="48dp"
            />
    </android.support.design.widget.AppBarLayout>
    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
     />
</android.support.design.widget.CoordinatorLayout>

Есть ли способ исключить представление/макет из анимации перехода, но включить его дочерние элементы? Я пытался добавить ViewPager Tabs, вызвав transition.addTarget(mTabs);, но это не помогло.


person tobi_b    schedule 04.02.2016    source источник


Ответы (1)


Вы должны исключить только свою панель инструментов вместо всего AppBarLayout.

transition.excludeTarget(toolbar, true);
person santalu    schedule 11.08.2017