使用 属性 动画在 2 种不同颜色之间更改视图的背景颜色

Using property animation to change the background color of a view between 2 different colors

Android Studio 1.1 Beta 4

您好,

我正在尝试为 PagerTitleStrip 设置动画以将颜色从深绿色更改为浅绿色并重复自身。但是,当我尝试启动动画时,没有任何变化。

这是我的 PagerTitleStrip,我正在尝试更改背景 属性。背景 属性 此处未指定,因为我将在运行时更改它。

<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:paddingBottom="4dp"
    android:paddingTop="4dp"
    android:textColor="#fff"/>

我的动画文件在我的 res/animator/pager_title_animator.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <objectAnimator
        android:propertyName="background"
        android:valueTo="@android:color/holo_green_light"
        android:valueFrom="@android:color/holo_green_dark"
        android:duration="500"
        android:repeatCount="-1"
        android:repeatMode="reverse"/>
</set>

在我的 java 代码中我开始它的地方:

AnimatorSet animatorSet = (AnimatorSet)AnimatorInflater.loadAnimator(getApplicationContext(),R.animator.pager_title_animator);
animatorSet.setTarget(mPagerTitleStrip);
animatorSet.start();

非常感谢您的任何建议,

您可以使用 TransitionDrawable 来实现此目的,如本帖所示:Animate change of view background color on Android

细目如下:

在您的 drawable 文件夹中创建一个 drawable xml 文件,类似于:

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
    <item android:drawable="@android:color/holo_green_light" />
    <item android:drawable="@android:color/holo_green_dark" />
</transition>

以此为背景定义寻呼机标题条:

<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:paddingBottom="4dp"
    android:paddingTop="4dp"
    android:textColor="#fff"
    android:background="@drawable/my_transition_bg"/>

然后像这样在代码中设置动画:

TransitionDrawable transition = (TransitionDrawable) mPagerTitleStrip.getBackground();
transition.startTransition(500);

这应该可以帮助您入门。