0

我有这行代码:

mBgTransition = (TransitionDrawable) mSwitchBg.getBackground();

bg曾经是一个普通的drawable,

但现在是 9 补丁

然后我得到这个错误:

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

如何使用我的 NinePatchDrawable 进行背景转换?

以前是这样的:

case CHECKED: {
    mBgTransition.reverseTransition(BG_TRANSITION_TIME);
}
case UNCHECKED: {
    mBgTransition.startTransition(BG_TRANSITION_TIME);
}
4

1 回答 1

1

我怎样才能解决这个问题?

不要尝试将 aNinePatchDrawable转换为 a TransitionDrawable。两者都不是另一个的子类,所以它不起作用。两者根本不可互换。

相反,您需要强制mSwitchBg.getBackground()转换为NinePatchDrawable.

如何使用我的 NinePatchDrawable 进行背景转换?

您需要在过渡可绘制资源文件中使用九个补丁可绘制对象。

因此,您应该具有以下内容:

  • 代表过渡可绘制的两种状态的两个九补丁可绘制 PNG
  • 一个引用九个补丁的过渡可绘制 XML 文件。
  • One layout XML file (or code) that sets the background of your View to the transition drawable, not the nine-patch.

The transition drawable should look something like this:

<transition
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:drawable="@drawable/my_nine_patch" />
    <item
        android:drawable="@drawable/my_second_nine_patch" />

</transition>
于 2013-10-30T14:16:35.580 回答