如何在两个不同的 9 补丁图像之间制作动画?

How to animate between two different 9-patch images?

如何在两个 9 补丁图像文件之间制作动画?我有两个不同形状的 9 补丁图像文件,我想随着时间的推移从一个图像到下一个图像进行动画处理。我知道一种使用我认为适用的可绘制对象的方法,但是,我收到一个转换错误

android.graphics.drawable.NinePatchDrawable cannot be cast to android.graphics.drawable.TransitionDrawable

这是我的实现。我创建了一个引用我的两个 9 补丁图像的可绘制文件。

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_drawer_blue" />
    <item android:drawable="@drawable/bg_drawer_white" />
</transition>

然后我试着做一个动画

TransitionDrawable transition = (TransitionDrawable) mAnimateBgView.getBackground();
transition.startTransition(10000);

我也试过了

TransitionDrawable td = new TransitionDrawable(new Drawable[] {
     getResources().getDrawable(R.drawable.bg_drawer_blue),
     getResources().getDrawable(R.drawable.bg_drawer_white)
});
d.startTransition(1000);

没有结果。动画不工作。

对于其他 运行 问题,原因是 xml 可绘制对象未设置为背景。

添加以下行解决了投射问题。

mAnimateBgView.setBackground(getResources().getDrawable(R.drawable.anim_bg));