2015-05-11 3 views
1

У меня в стиляхAnimate панель навигации цвет Android

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="MYTheme" parent="..."> 
     <item name="android:navigationBarColor">@color/navigationBarColor</item> 
    </style> 
</resources> 

Я знаю, что я могу изменить цвет панели навигации с

getWindow().setNavigationBarColor(...); 

Я хочу изменить цвет с анимацией, переход между текущим цветом и новым цветом

+0

Я думаю objectAnimator Виль помочь вам –

+0

@Nilesh вы можете привести пример? – rkmax

ответ

-1

Это может помочь вам,

public void animateToolbar() { 
    toolbar.setTranslationY(-56); 
    toolbar.animate() 
      .translationY(0) 
      .setDuration(300) 
      .setStartDelay(300); 
} 

Вызовите этот метод в onCreate view

4

Вы можете изменить цвет с помощью ValueAnimator.ofArgb. Я должен упомянуть, что он поддерживается только с API> = 21. Это не должно быть проблемой, потому что setNavigationBarColor is> = 21 тоже.

int from = getWindow().getNavigationBarColor(); 
int to = Color.BLACK; // new color to animate to 

ValueAnimator colorAnimation = ValueAnimator.ofArgb(from, to); 
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator animator) { 
     getWindow().setNavigationBarColor((Integer) animator.getAnimatedValue()); 
    } 
}); 
colorAnimation.start(); 
+0

Посмотрите мой ответ и проверьте, как сделать его совместимым с API 11+. –

+0

@joaquin, ваш ответ по-прежнему только 21+, потому что 'setNavigationBarColor' - 21+. –

+0

Да, вы абсолютно правы. прости –

0

Я согласен частично с ответом Егора Н. Но мой ответ сделает ваше приложение совместимым с API 11 вместо 21, как он предлагает.

делюсь this answer

Integer colorFrom = getWindow().getNavigationBarColor(); 
Integer colorTo = Color.BLACK; 
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo); 
colorAnimation.addUpdateListener(new AnimatorUpdateListener() { 

    @Override 
    public void onAnimationUpdate(ValueAnimator animator) { 
     getWindow().setNavigationBarColor((Integer) animator.getAnimatedValue()); 
    } 

}); 
colorAnimation.start(); 
Смежные вопросы