2016-07-13 141 views
0

我正在尝试应用“脉冲”动画来关注我的工具栏中的菜单项;但是,如果所有菜单项都隐藏,我无法找到将动画应用于溢出图标的方法。Android - 菜单溢出图标动画

使用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

由于所有项目都没有显示,我认为你可以这样做:

@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))); 
     } 
    } 
} 

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

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

+0

这似乎工作得很好,谢谢! –