I use show/hide to display a fragment that takes up part of the screen. For some reason when the fragment is shown the slide_in_left
animation plays, but when the fragment is being hidden there is no animation, the fragment just disappears. I've tried using the slide_in_left
animation for both exit
and enter
, this did not help. When a trace the code into the support package, the animation does get created and the code for displaying it is being executed. (I traced the .hide
call)
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();
Just in case here's the xml for the slide_out_left
animation
<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>
Edit:
It's possible that the problem has something to do with the fact that my_fragment
shares screen width with another fragment cotaining a webview. When .show is executed for my_fragment it becomes visible and shares space within a horizontal linear layout (how much screen width each of the two fragments takes up is determined by the weight parameter).