R.anim имеет анимации по умолчанию, определенные (как окончательные):
, чтобы изменить это поведение, вам придется использовать пользовательские NavOptions ,
, потому что именно здесь анимация присваивается NavAction .
.с NavOptions.Builder :
protected NavOptions getNavOptions() {
NavOptions navOptions = NavOptions.Builder()
.setEnterAnim(R.anim.default_enter_anim)
.setExitAnim(R.anim.default_exit_anim)
.setPopEnterAnim(R.anim.default_pop_enter_anim)
.setPopExitAnim(R.anim.default_pop_exit_anim)
.build();
return navOptions;
}
, скорее всего, потребуется создать DefaultNavFragment
, который расширяет класс androidx.navigation.fragment (документацияпока еще не завершено).
в качестве альтернативы ... при взгляде на attrs.xml
этого пакета;эти анимации * * * * в стиле:
<resources>
<declare-styleable name="NavAction">
<attr name="enterAnim" format="reference"/>
<attr name="exitAnim" format="reference"/>
<attr name="popEnterAnim" format="reference"/>
<attr name="popExitAnim" format="reference"/>
...
</declare-styleable>
</resources>
это означает, что можно определить соответствующие стили - и определить их как часть темы ...
их можно определить в styles.xml
:
<style name="Theme.Default" parent="Theme.AppCompat.Light.NoActionBar">
<!-- these should be the correct ones -->
<item name="NavAction_enterAnim">@anim/default_enter_anim</item>
<item name="NavAction_exitAnim">@anim/default_exit_anim</item>
<item name="NavAction_popEnterAnim">@anim/default_pop_enter_anim</item>
<item name="NavAction_popExitAnim">@anim/default_pop_exit_anim</item>
</style>