У меня странное поведение с анимацией макета по умолчанию на устройствах под управлением Android 5 (Lollipop). Я использую операцию с несколькими фрагментами, которые заменяются во время выполнения, используя диспетчер фрагментов по умолчанию. При замене старого фрагмента я хочу использовать анимацию для плавного потока ui. На устройствах pre-lollipop анимация работает так, как ожидалось, но на устройствах, работающих с последними os, анимация между фрагментами глюков:
Я попытался использовать XML-тег анимации по умолчанию
android:animateLayoutChanges="true"
Поскольку он не работает, я изменил его с помощью этого кода без эффекта
mTransaction = mManager.beginTransaction();
mTransaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
mTransaction.remove(mFragment);
mTransaction.add(R.id.container, mFragment, "fragment");
mTransaction.commit();
Я тестировал код на разных устройствах и в эмуляторе Android. Странно, что он работает так, как ожидалось, на устройствах, запускающих pre-lollipop и в эмуляторе Android, работающем с последней ОС (5.0.1). Но он не работает на таких устройствах, как Nexus 4 и Nexus 5 под управлением Android 5.0
Любые предложения? Любая помощь?
Спасибо в Advance
EDIT:
Кажется, это ошибка в зависимости от используемого устройства. Я тестировал код на разных устройствах (Samsung Galaxy S4, HTC (One mini2, One M8, Desire S), Nexus 4 и 5), и он появляется только на устройствах google nexus.
ИЗМЕНИТЬ
Обходным решением для устранения проблемы с анимацией является отключить аппаратное ускорение с помощью
<application android:hardwareAccelerated="false">
в манифесте приложения. Но использование этого делает приложение очень медленным.
Решение
Решение этой проблемы состоит в том, чтобы установить фоновое изображение/цвет/способный к действию. см.