Ce code fonctionne comme prévu sur tous les appareils, à l'exception des appareils Sony avec le mode ENDURANCE activé:mode STAMINA casse chargement fragment avec des animations personnalisées
int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
getFragmentManager()
.beginTransaction()
.setCustomAnimations(backStackCount == 0? R.animator.noanim : R.animator.slide_in,
R.animator.zoom_out, R.animator.zoom_in, backStackCount == 0? R.animator.noanim : R.animator.slide_out)
.replace(R.id.container, fragment, String.valueOf(backStackCount))
.addToBackStack(fragment.getClass().toString())
.commit();
Avec le mode STAMINA le premier fragment est chargé normalement, mais le prochain fait n'apparaît pas du tout (l'écran reste noir). Si je commente la méthode setCustomAnimations
, la transaction fonctionne comme prévu. Que se passe-t-il ici, comment faire fonctionner la transaction avec le mode STAMINA activé?
R.animator.slide_in:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:valueFrom="1.0"
android:valueTo="0"
android:propertyName="xFraction"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
EDIT: résolu par moi-même, voir ci-dessous