WindowExitTransition总是淡化视图

时间:2019-02-16 18:54:27

标签: java android transition

我目前正在尝试在两个Activity之间进行SharedElementTransition,除了一件事情外,大多数情况下它都能正常工作。 第一个活动的ExitAnimation由两个幻灯片过渡组成: activity_main_transition.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
    android:transitionOrdering="together">

    <slide android:slideEdge="bottom" android:duration="@integer/anim_duration">
        <targets>
            <target android:targetId="@+id/bottom_appbar"/>
            <target android:targetId="@+id/fab"/>
        </targets>
    </slide>

    <slide android:slideEdge="top" android:duration="@integer/anim_duration">
        <targets>
            <target android:targetId="@+id/pager"/>
        </targets>
    </slide>

</transitionSet>

但是,当转场播放视图时,不仅会滑动视图而且会淡入淡出,转场也要花费持续时间中指定时间的三分之一。我还在调试时进行了检查,上面介绍的过渡集就是我所描述的。即使我对输入和退出转换使用相同的转换文件,其他三个转换也可以正常工作,因此我不知道是什么导致了此行为。 还有一些其他代码:

styles.xml:

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        ...
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowExitTransition">@transition/activity_main</item>
        <item name="android:windowEnterTransition">@transition/activity_main</item>

    </style>

Manifest.xml:

...
<activity
        android:name=".ui.activitys.MainActivity"
        android:theme="@style/AppTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
...

我如何开始新活动:

TextView sharedText = v.findViewById(R.id.txt_name);
String transition = ViewCompat.getTransitionName(sharedText);
ActivityOptions options = ActivityOptions.
        makeSceneTransitionAnimation(getActivity(), sharedText, transition);
Intent i = new Intent(getContext(), ActivityCustomer.class);
i.putExtra("id", item.getId());
i.putExtra("title", item.getName1()+" "+item.getName2());
i.putExtra(Constants.EXTRA_TRANSITION_NAME, transition);
Transition t =  getActivity().getWindow().getExitTransition();
startActivity(i, options.toBundle());

0 个答案:

没有答案