Я ищу определенную c анимацию перехода фрагмента:
У меня есть текущий (старый) фрагмент A на экране, и я хочу перейти к (новому) фрагменту B. Фрагмент A должен скользить вниз и выявить фрагмент B, который находится за фрагментом A. К сожалению, я не нашел способа оживить этот переход.
Нижняя анимация фрагмента A работает нормально, но покрыта фрагментом B. Это видно при изменении альфа значение фрагмента B. Корректировка значения z с обновлением view.elevation фрагмента A работает для pop-анимации, но не для enter-animation.
Буду признателен за любую идею, которая может решить мою проблему , Установка высоты Фрагмента a на самое высокое, а Фрагмента B на самое низкое значение с плавающей точкой не работает. Это ошибка? Потому что настройка z-значения работает для анимации pop (exit).
Мой контроллер навигации:
<fragment
android:id="@+id/fragmentA"
android:name=".fragment_a"
android:label="FragmentA"
tools:layout="@layout/fragment_a">
<action
android:id="@+id/action_fragment_a_to_fragment_b"
app:destination="@id/fragment_b"
app:enterAnim="@anim/nothing"
app:exitAnim="@anim/slide_out_bottom_animation"
app:popEnterAnim="@anim/slide_in_bottom_animation"
app:popExitAnim="@anim/nothing" />
</fragment>
Мои анимации:
Ничего:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="1.0"
android:zAdjustment="bottom" />
</set>
slide_out_bottom_animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:zAdjustment="top"/>
</set>
Настройка высоты фрагмента A
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.elevation = Float.MAX_VALUE
}
Спасибо
Марсель