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

這似乎工作得很好,謝謝! –