Android objectAnimator动画布局的backgroundColor

XMi*_*ght 14 android android-animation

我有个问题.我想动画的背景颜色LinearLayout使用ObjectAnimator.
问题是,它的动画,但它确实存在期间也没有保健valueFromvalueTo.

这是我的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" />
Run Code Online (Sandbox Code Playgroud)

在Java中我称之为:

ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg);
objAnim.setTarget(view);
objAnim.start();
Run Code Online (Sandbox Code Playgroud)

请注意,当我为布局的alpha设置动画时,它会按预期工作.
这是Android的bug(华硕Transformer上的4.0.3),还是我错过了什么?

use*_*536 39

我用谷歌搜索了一下.有一个答案.尝试使用TransitionDrawable.http://developer.android.com/guide/topics/resources/drawable-resource.html#Transition

此外,stackoverflow.com上的某个主题专门针对同样的问题.

ADDED代码示例:

    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);
Run Code Online (Sandbox Code Playgroud)


tyn*_*ynn 13

这似乎是个老问题.遇到类似的问题我偶然发现了这个问题.

最后它只是Android中的一个错误.该代码应该可以工作,但AnimatorInflater在设置评估器时会出错.

因此,TypeEvaluator在通货膨胀之后重新设定就可以了.

    ObjectAnimator objAnim = (ObjectAnimator)AnimatorInflater.loadAnimator(getActivity(), R.animator.animator_bkg);
    objAnim.setTarget(view);
    objAnim.setEvaluator(new ArgbEvaluator());
    objAnim.start();
Run Code Online (Sandbox Code Playgroud)

设置为new ArgbEvaluator()动画像预期的工作.

  • @Daniëlle `animator_bkg` 是作者使用的动画器。因此,您需要创建自己的 XML 资源并使用它。 (2认同)