【问题标题】:Android activity transitions - Window.excludeTarget() prevents transitions of child viewsAndroid 活动转换 - Window.excludeTarget() 阻止子视图的转换
【发布时间】:2023-03-16 04:02:01
【问题描述】:

我正在使用新的Transition Api,并希望在两个活动之间实现良好的过渡。这两个活动都包含一个AppBar 和一个标签式ViewPager

当我第一次运行转换时,AppBar 淡出并再次出现在两个活动转换之间,所以它看起来像是在闪烁:

为了解决我试图通过调用transition.excludeTarget()从活动转换中排除AppBar

// 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 不再有交叉淡入淡出动画:

这是两个布局在generell中的样子:

<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>

有没有办法从过渡动画中排除视图/布局但包含其子项?我尝试通过调用transition.addTarget(mTabs); 来添加ViewPager Tabs,但没有任何区别。

【问题讨论】:

    标签: android android-transitions appbar android-appbarlayout


    【解决方案1】:

    您应该只排除您的工具栏而不是整个 AppBarLayout。

    transition.excludeTarget(toolbar, true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多