我目前正在尝试在两个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());