Android objectAnimator анимировать backgroundColor макета
у меня проблема. Я хочу анимация цвета фона of a LinearLayout
, используя ObjectAnimator
.
проблема в том, что он оживляет, но он не заботится о продолжительности и valueFrom
и valueTo
.
это мой xml-файл:
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:propertyName="backgroundColor"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="#FF0000"
android:valueTo="#000000" />
в Java я называю так:
ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg);
objAnim.setTarget(view);
objAnim.start();
обратите внимание, что когда я анимирую Альфа макета, он работает так, как ожидалось.
это ошибка Android (4.0.3 на Asus Transformer), или я скучаю что-то?
2 ответов
Я немного погуглил. Есть ответ. Попробуйте использовать TransitionDrawable. http://developer.android.com/guide/topics/resources/drawable-resource.html#Transition
кроме того, есть тема где-то на stackoverflow.com посвящается той же проблеме.
добавлен пример кода:
Button btn = (Button)this.findViewById(R.id.btn1);
//Let's change background's color from blue to red.
ColorDrawable[] color = {new ColorDrawable(Color.BLUE), new ColorDrawable(Color.RED)};
TransitionDrawable trans = new TransitionDrawable(color);
//This will work also on old devices. The latest API says you have to use setBackground instead.
btn.setBackgroundDrawable(trans);
trans.startTransition(5000);
кажется, это старая проблема. Я наткнулся на этот вопрос, имея аналогичную проблему.
В конце это была просто ошибка в Android. Код должен работать, но AnimatorInflater просто ошибается при настройке оценщика.
Так установка TypeEvaluator
после инфляции снова будет делать трюк.
ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg);
objAnim.setTarget(view);
objAnim.setEvaluator(new ArgbEvaluator());
objAnim.start();
значение new ArgbEvaluator()
анимация работает как задумано.