2015-02-09 81 views
0
Android Studio 1.1 Beta 4 

你好之间的视图的背景颜色,使用属性动画改变2种不同的颜色

我试图动画一PagerTitleStrip从深绿颜色变为浅绿色和重演。但是,当我尝试并开始动画时,没有任何变化。

这是我的PagerTitleStrip,我试图改变背景属性。这里没有指定Background属性,因为我会在运行时更改它。在我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代码

<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"/> 

我的动画文件,我启动它:

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

非常感谢您的任何建议,

回答

1

可以完成通过使用此线程中看到的TransitionDrawable:Animate change of view background color on Android

这里的故障:

创建您绘制的文件夹类似这样的绘制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); 

这应该让你开始。