Анимация выбранного значка в BottomNavigationView - PullRequest
0 голосов
/ 27 июня 2018

Я смотрел на анимацию VectorDrawables, которые я сейчас использую в моем BottomNavigationView, когда выбрана вкладка, как в в этом исследовании продукта материала для приложения Owl . Однако в отличие от представления панели инструментов, когда я получаю значок с помощью MenuItem.getIcon (), приводим его к AnimatedVectorDrawable и вызываем метод animate (), анимация отсутствует.

Мне было интересно, могу ли я что-нибудь сделать для этого, будет ли это включено в стабильную библиотеку компонентов материалов или мне лучше создать собственное представление, расширяющее класс BottomNavigationView.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

мы можем анимировать иконку 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

0 голосов
/ 27 июня 2018

В настоящее время невозможно использовать анимированные значки с BottomNavigationView. У нас был этот запрос на добавление функций, но мы удалили из него работу.

Если вы хотите помочь добавить поддержку, мы с радостью примем pr на https://github.com/material-components/material-components-android

...