我正在尝试通过使用 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);