мы можем анимировать иконку bottomnavigationview, используя следующий код:
bottomNavigationId.menu.getItem(i).icon =
AnimatedVectorDrawableCompat.create(this, R.drawable.ic_settings_active_avd)
val anim = bottomNavigationId.menu.getItem(i).icon as Animatable
anim.start()
но это не работает API> 24
Итак, лучший подход - создать AnimatedStateListDrawable, где AVD - это переход, используемый в android: state_checked = "true". Затем вы можете просто установить его как нарисованный на MenuItem, и он будет запускать AVD при выборе элемента.
Например:
<?xml version="1.0" encoding="utf-8"?>
<animated-selector xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:targetApi="16">
<item android:id="@+id/state_on"
android:drawable="@drawable/ic_settings_active"
android:state_checked="true"/>
<item android:id="@+id/state_off"
android:drawable="@drawable/ic_settings_inactive"/>
<transition
android:drawable="@drawable/ic_settings_active_avd"
android:fromId="@id/state_off"
android:toId="@id/state_on" />
</animated-selector>
Использовать этот анимированный список состояний для рисования в виде значка в меню
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_settings_fragment"
android:icon="@drawable/anim_settings"
android:title="@string/settings"
app:showAsAction="always" />
...
</menu>
Оформить заказ по ссылке ниже для полного понимания навигации внизу с анимированными рисунками
https://medium.com/@naththeprince/delightful-animations-in-android-d6e9c62a23d3