我的应用有两个活动,例如 ActivityA 和 ActivityB。我在 xml 文件中为 ActivityB 创建了 Enter/Return 转换。在这些转换中,FloatingActionButton 将从屏幕的右边缘滑入/滑出。当设备方向为纵向时,一切都会正常工作,但当设备方向为横向时,FloatingActionButton 不会滑入。
res/transition-v21/enter.xml:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:transitionOrdering="together">
<fade>
<targets>
<target android:excludeId="@android:id/statusBarBackground" />
<target android:excludeId="@android:id/navigationBarBackground" />
</targets>
</fade>
<slide android:slideEdge="right">
<targets>
<target android:targetId="@+id/fabFavorite" />
</targets>
</slide>
res/transition-v21/return.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:transitionOrdering="together">
<fade>
<targets>
<target android:excludeId="@android:id/statusBarBackground" />
<target android:excludeId="@android:id/navigationBarBackground" />
</targets>
</fade>
<slide android:slideEdge="right">
<targets>
<target android:targetId="@+id/fabFavorite" />
</targets>
</slide>
res/values-v21/styles.xml
<style name="AppTheme.ActivityA" parent="@style/AppTheme">
<item name="android:windowContentTransitions">true</item>
</style>
<style name="AppTheme.ActivityB" parent="@style/AppTheme">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowEnterTransition">@transition/enter</item>
<item name="android:windowReturnTransition">@transition/return</item>
</style>
然后我将这些主题添加到 AndroidManifest 中的相应活动中。
最后在 ActivityA 中为 onClickListener:
ActivityOptionsCompat activityOptions =
ActivityOptionsCompat.makeSceneTransitionAnimation(this);
Intent intent = new Intent(this, ActivityB.class);
ActivityCompat.startActivity(this, intent, activityOptions.toBundle());
结果:(设备方向为横向时,FloatingActionButton没有滑动效果)