活动默认加载的片段'过渡

时间:2016-07-14 09:12:24

标签: android android-fragments android-5.0-lollipop android-transitions

我有一个活动,默认情况下会在其中加载一个片段的FrameLayout。我已按如下方式设置片段的进入和退出转换:

HomeFragment homeFragment = new HomeFragment();
homeFragment.setEnterTransition(enter);
homeFragment.setExitTransition(exit);
getSupportFragmentManager().beginTransaction().replace(R.id.vg_full_container,homeFragment).commitAllowingStateLoss();

但是当我的活动启动时,片段不会显示任何转换。 但是,如果我使用FragmentTransaction' setCustomAnimation(),片段会动画进入屏幕。此外,在同一活动中由某些事件(例如OnClick()等)触发加载的片段也会转换到setEnterTransition()setExitTransition()的屏幕。但是活动的默认加载片段不会过渡,或者至少我看不到任何转变发生。此外,我没有在加载此片段的活动上设置任何进入和退出转换。

如何使用setEnterTransition()setExitTransition()转换默认加载的片段?

以下是转换XML文件:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
   <slide
       android:duration="400"
       android:slideEdge="left" />
   <targets>
       <target android:excludeId="@id/toolbar"/>
       <target android:excludeId="@id/collapsing_toolbar"/>
       <target android:excludeId="@id/transaction_toolbar"/>
       <target android:excludeId="@id/tab_layout"/>
   </targets>
</transitionSet>

1 个答案:

答案 0 :(得分:1)

试试这个:

getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.vg_full_container,homeFragment)
    .setCustomAnimations(R.anim.enter, R.anim.exit,
                         R.anim.popenter, R.anim.popexit)
    .commitAllowingStateLoss();

设置这样的动画:

Android Left to Right slide animation