#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
. К сожалению, этот интерфейс устарел.