Android, анимация расширения / сворачивания меню

#android #animation #menuitem

Вопрос:

Я установил пользовательский вид в качестве элемента меню ActionView:

 <item
    android:id="@ id/search"
    android:icon="@drawable/ic_baseline_search_24"
    android:title="@string/search_title"
    app:actionViewClass="com.myapplication.SearchBox"
    app:showAsAction="collapseActionView|ifRoom" />
 

«Поле поиска» добавляется на панель инструментов, когда я нажимаю пункт «поиск», и это нормально.
Теперь я хочу анимировать, когда мое представление действий расширяется и когда оно сворачивается, как я могу этого достичь?

Обновить

Я попытался использовать анимацию в onAttachedToWindow событии, и это, кажется, работает.

 ... in my SearchBox class ...

override fun onAttachedToWindow() {
    super.onAttachedToWindow()

    if (parent is Toolbar) {
        layoutParams.height = Toolbar.LayoutParams.MATCH_PARENT
        layoutParams.width = Toolbar.LayoutParams.MATCH_PARENT

        // Check if the runtime version is at least Lollipop
        // get the center for the clipping circle
        val cx = width
        val cy = height / 2

        x = 0f

        // get the final radius for the clipping circle
        val finalRadius = hypot(cx.toDouble(), cy.toDouble()).toFloat()

        // create the animator for this view (the start radius is zero)
        val anim = ViewAnimationUtils.createCircularReveal(this, cx, cy, 0f, finalRadius)
        // make the view visible and start the animation
        visibility = View.VISIBLE
        anim.duration = 2000
        anim.start()
    }
}
 

Это правильный путь?

ОБНОВЛЕНИЕ 2

Реализация интерфейса androidx.appcompat.view.CollapsibleActionView позволяет нам получать onActionViewExpanded() и onActionViewCollapsed() от androidx.appcompat.widget.Toolbar . К сожалению, этот интерфейс устарел.