我使用show/hide来显示占据屏幕一部分的片段。但奇怪的是,当片段显示时,slide_in_left动画会播放,但当片段被隐藏时,没有动画,片段只是消失了。我尝试将slide_in_left动画用于exit和enter,但这没有帮助。当我跟踪代码到支持包中时,动画确实被创建并且执行了显示它的代码。(我跟踪了.hide调用)
FragmentManager fm = _activity.getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.my_fragment);
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left);
if (fragment.isHidden()) {
ft.show(fragment);
fragment.setUserVisibleHint(true);
} else {
ft.hide(fragment);
}
ft.commit();
< p> 如果需要,这是 slide_out_left
动画的 XML 代码。 < /p>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="-50%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
编辑:
问题可能与my_fragment
与包含Web视图的另一个片段共享屏幕宽度有关。当执行.show命令时,my_fragment变为可见,并在水平线性布局中共享空间(两个片段占用多少屏幕宽度由权重参数确定)。