Android - 菜单溢出图标上的动画

时间:2016-07-13 17:08:50

标签: android animation android-support-library android-toolbar

我试图应用“脉冲”#39;动画,以关注我的工具栏中的菜单项;但是,如果隐藏了所有菜单项,我找不到将动画应用于溢出图标的方法。

使用this solution中的代码,我可以获取ActionMenuView,但它没有任何子项可以应用动画。

//amv.getChildCount() returns 0.

在我的片段中

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    Toolbar toolbar = getToolbar();
    for (int i = 0; i < toolbar.getChildCount(); i++) {
    View view = toolbar.getChildAt(i);
    if(view.getClass().getSimpleName().equals("ActionMenuView")) {
        ActionMenuView amv = (ActionMenuView) view;
        for (int i1 = 0; i1 < amv.getChildCount(); i1++) {
            amv.getChildAt(i1).startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
        }
    }
}

menu.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:res="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">

<item
    android:id="@+id/tutorial"
    android:title="@string/tutorial"
    res:showAsAction="never"
    res:actionLayout="@layout/button_info_white"/>

<item
    android:id="@+id/social_filter"
    android:title="@string/social_filter"
    res:showAsAction="never"
    />

</menu>

感谢您的协助。

1 个答案:

答案 0 :(得分:2)

由于您的所有商品都没有展示,我认为您可以这样做:

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    Toolbar toolbar = getToolbar();
    for (int i = 0; i < toolbar.getChildCount(); i++) {
        View view = toolbar.getChildAt(i);
        if (view.getClass().getSimpleName().equals("ActionMenuView")) {
            view.startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
        }
    }
}

我做了一个非常基本的测试,当所有项目都隐藏(并且你只有溢出图标)时,它可以正常工作。

请进行额外的测试,看看你是否有任何副作用。