2017-07-17 85 views
0

我需要創建一個動畫定期讓漢堡菜單按鈕動搖。如果這只是一個看法,我可以搞清楚,但事實並非如此。下面是我如何設置的圖標,自定義圖片:Android漢堡包菜單按鈕動搖動畫

final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 

toolbar.post(new Runnable() { 
    @Override 
    public void run() { 
     Drawable d = ResourcesCompat.getDrawable(getResources(), R.drawable.ham_menu, null); 
     toolbar.setNavigationIcon(d); 
    } 
}); 

我不能只是動畫工具欄(這是一個View在那裏我可以設置動畫),我需要動畫只是菜單圖標。搜索答案不起作用,因爲所有結果都是關於抽屜打開和關閉時圖標和箭頭之間的動畫。這甚至有可能嗎?

+0

https://stackoverflow.com/questions/30285412/navigation-drawer-icons-hamburger-arrow-animation-when-expand-action-view –

+0

https://stackoverflow.com/questions/33124555/是它可能使用的漢堡包圖標動畫從android-in-another-但是 –

+0

http://codetheory.in/android-navigation-drawer/ –

回答

0

我通過來回切換drawable來解決它,但是如果有人有更好的解決方案,那將會很棒。

private void animateMenu(final Toolbar toolbar){ 

      // Flash the menu several times quickly, then wait a few seconds. Repeat. 
      animateMenu(toolbar, 6, R.drawable.ham_menu_2, new GenericCallback() { 
       @Override 
       public void success(Object result) { 
        handler.postDelayed(new Runnable() { 
         @Override 
         public void run() { 
          animateMenu(toolbar); 
         } 
        }, 5000); 
       } 

       @Override 
       public void failure(Throwable error) { 

       } 
      }); 
    } 

    private void animateMenu(final Toolbar toolbar, final int count, final int drawable, final GenericCallback callback){ 

     toolbar.postDelayed(new Runnable() { 
      @Override 
      public void run() { 

       Drawable d2 = ResourcesCompat.getDrawable(getResources(), drawable, null); 
       toolbar.setNavigationIcon(d2); 
       int i = count - 1; 
       if(i == 0){ 
        callback.success(null); 
       } 
       else { 
        animateMenu(toolbar, i, drawable == R.drawable.ham_menu ? R.drawable.ham_menu_2 : R.drawable.ham_menu, callback); 
       } 
      } 
     }, 200); 
    }