使用 属性 动画在 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);
这应该可以帮助您入门。
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);
这应该可以帮助您入门。