首页 > 解决方案 > Android, menuitem展开/折叠动画

问题描述

我已将自定义视图设置为 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. 不幸的是,该接口已被弃用。

标签: androidanimationmenuitem

解决方案


推荐阅读