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

时间:2015-02-09 10:11:39

标签: android android-animation

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();

非常感谢任何建议,

1 个答案:

答案 0 :(得分:1)

您可以使用此线程中显示的TransitionDrawable来完成此操作:Animate change of view background color on Android

以下是细分:

在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);

这应该让你开始。