2015-02-16 3 views
1

Всякий раз, когда цветовая схема изменяется на сервере, она также должна изменяться в приложении. До сих пор мне удалось заставить панель действий изменить свой цвет. Единственная проблема заключается в том, что при получении уведомления цвет меняется мгновенно. Есть ли способ оживить переход от старого цвета к новому?Как изменить цвет панели действий с помощью анимации?

Спасибо!

ответ

15

В этом примере цвет (панель состояния, панель инструментов) будет изменен (с анимацией), вам нужно будет немного изменить его в соответствии с вашими потребностями.

 Integer colorFrom = Color.parseColor(ThemeColor.getPrevColor()); 
     Integer colorTo = Color.parseColor(ThemeColor.getColor()); 
     Integer colorStatusFrom = Color.parseColor(ThemeColor.getPrevStatusColor()); 
     Integer colorStatusTo = Color.parseColor(ThemeColor.getStatusColor()); 
     ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo); 
     ValueAnimator colorStatusAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorStatusFrom, colorStatusTo); 

     colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

      @Override 
      public void onAnimationUpdate(ValueAnimator animator) { 
       toolbar.setBackgroundColor((Integer) animator.getAnimatedValue()); 
      } 
     }); 

     colorStatusAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

      @Override 
      public void onAnimationUpdate(ValueAnimator animator) { 
       if (currentapiVersion >= Build.VERSION_CODES.LOLLIPOP) { 
        getActivity().getWindow().setStatusBarColor((Integer) animator.getAnimatedValue()); 
       } 
       if (currentapiVersion == Build.VERSION_CODES.KITKAT) { 
        tintManager.setStatusBarTintColor((Integer) animator.getAnimatedValue()); 
       } 
      } 
     }); 

     colorAnimation.setDuration(1300); 
     colorAnimation.setStartDelay(0); 
     colorAnimation.start(); 
     colorStatusAnimation.setDuration(1300); 
     colorStatusAnimation.setStartDelay(0); 
     colorStatusAnimation.start(); 
+1

Работает как очарование! большое спасибо! :) –

+0

Ничего себе, потрясающе, спасибо большое! ;) – Jerry

+0

Что такое "tintManager"? –

Смежные вопросы