2

我正在尝试通过使用 TransitionDrawable 类更改背景可绘制对象来为 TextView 交替背景颜色设置动画。这是我得到的结果:

在此处输入图像描述

问题是第二个 drawable 比第一个小,因此绿色背景总是在侧面可见。我需要蓝色背景来完全覆盖绿色背景。我只是无法弄清楚为什么会这样。

一些布局文件:

<TextView
        android:id="@+id/alertCrumb"
        style="@style/Custom.TextAppearance.AppCompat.Caption"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/crumb_animated"
        android:textColor="@android:color/white"/>

crumb_animated.xml

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

            <solid android:color="@android:color/holo_green_light" >
            </solid>

            <padding
                android:bottom="1dp"
                android:left="4dp"
                android:right="4dp"
                android:top="1dp" >
            </padding>

            <corners android:radius="2dp" >
            </corners>

        </shape>
    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">

            <solid android:color="@android:color/holo_blue_dark" >
            </solid>

            <padding
                android:bottom="1dp"
                android:left="4dp"
                android:right="4dp"
                android:top="1dp" >
            </padding>

            <corners android:radius="2dp" >
            </corners>

        </shape>
    </item>
</transition>

在java中调用它:

final TransitionDrawable background = (TransitionDrawable) alertCrumb.getBackground();
        background.startTransition(500);
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                background.reverseTransition(1000);
                handler.postDelayed(this, 1000);
            }
        }, 2000);
4

0 回答 0