Этот код работает как ожидалось на всех устройствах, кроме устройств Sony с активированным режимом STAMINA:
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();
В режиме STAMINA первый фрагмент загружается нормально, но следующий не отображается вообще (экран остается черным). Если я прокомментирую метод setCustomAnimations
, транзакция работает так, как ожидалось. Что происходит здесь, как заставить транзакцию работать с активированным режимом STAMINA?
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>
РЕДАКТИРОВАТЬ: решить самостоятельно, см. ниже