support-v4: 27.1.0 пользовательские анимации не работают должным образом
Анимация фрагментов не работает должным образом с support-v4:27.1.0
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(ENTER_ANIM , LEAVE_ANIM)
.replace(R.id.main_activity_fragment_place_holder, fragment)
.addToBackStack(tag)
.commitAllowingStateLoss();
вводить анимацию
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
оставьте анимацию
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="500" />
Ответы
Ответ 1
Я просто попал в ту же проблему. Поддержка библиотеки 27.1.0, кажется, есть проблема с Anim переходов, которые используют свойство альфа.
Мое впечатление, что механизм перехода неправильно реализует "заливку", так что фрагмент alpha быстро отскакивает назад до 1 до удаления фрагмента. Это вызывает мигающий эффект, когда замещенный фрагмент ненадолго виден, а затем исчезает.
Я решил проблему переключиться на анимационные переходы.
Т.е. заменил мой /res/anim/fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0"
android:toAlpha="1"
android:duration="500"
/>
с аналогичным /res/animator/fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="alpha"
android:valueFrom="0"
android:valueTo="1"
android:duration="500"
/>
Я сделал то же самое для перехода fade_out.
Ответ 2
Мигающий эффект был зафиксирован в последней версии библиотеки поддержки 27.1.1. (см. вопрос 74051124)
Ответ 3
У меня такая же проблема после обновления библиотеки поддержки с 27.0.2 до 27.1.0. Вместо плавного размытия фрагменты несколько раз мигают.
Кажется, что все аниматоры работают, как ожидалось, кроме alpha
аниматоров.
Тем не менее, я нашел обходной путь для этой ошибки: если вы отключите анимацию ввода, переход по-прежнему исчезает. Он не исчезает точно так же, как раньше, но, на мой взгляд, он выглядит хорошо (или даже лучше).
Новая анимация ввода (которую я назвал nothing.xml
):
<?xml version="1.0" encoding="utf-8"?>
<set/>