📅  最后修改于: 2023-12-03 15:13:22.756000             🧑  作者: Mango
在Android中,背景颜色过渡动画可以使应用更加生动有趣。本文将介绍如何使用XML和代码实现背景颜色过渡动画。
在res/drawable文件夹中创建文件background_animation.xml
,如下所示:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<animate
android:duration="300"
android:propertyName="backgroundColor"
android:valueFrom="#ffffff"
android:valueTo="#ff0000"
android:valueType="colorType" />
</item>
<item>
<animate
android:duration="300"
android:propertyName="backgroundColor"
android:valueFrom="#ff0000"
android:valueTo="#ffffff"
android:valueType="colorType" />
</item>
</selector>
上述代码使用了selector
标记,它定义了两个状态:pressed
和默认状态(也就是没有任何状态)。在pressed
状态下,背景颜色从白色过渡到红色;在默认状态下,背景颜色从红色过渡到白色。
接下来,在需要使用该动画的View的XML布局文件中,使用android:background
属性指定该动画即可,例如:
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"
android:background="@drawable/background_animation" />
首先,我们需要定义一个动画对象ValueAnimator
,并设置动画的起始颜色和目标颜色:
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.WHITE);
colorAnimation.setDuration(300); // 动画的持续时间,单位为毫秒
在动画执行过程中,我们需要监听每一帧的变化,同时更新View的背景颜色:
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
view.setBackgroundColor((int) animator.getAnimatedValue());
}
});
最后,我们需要启动动画:
colorAnimation.start();
完整的实现代码如下所示:
View view = findViewById(R.id.my_view);
ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.WHITE);
colorAnimation.setDuration(300);
colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
view.setBackgroundColor((int) animator.getAnimatedValue());
}
});
colorAnimation.start();
背景颜色过渡动画可以让应用更加生动有趣。我们可以使用XML或者代码来实现背景颜色过渡动画。无论你选择哪种方式,都需要定义动画对象和监听动画的变化,同时更新View的背景颜色。