Android 如何从TransitionDrawable中获取位图

Android 如何从TransitionDrawable中获取位图,android,bitmap,classcastexception,Android,Bitmap,Classcastexception,我有一个TransitionDrawable,我需要它的位图。当我使用getCurrent()获取其可绘制时,显然结果仍然是TransitionDrawable。但事实是TransitionDrawable是在另一个类中使用 final TransitionDrawable td = new TransitionDrawable(new Drawable[] { new ColorDrawable(android.R.color.transparent), drawable }); 其中,

我有一个TransitionDrawable,我需要它的位图。当我使用
getCurrent()
获取其可绘制时,显然结果仍然是
TransitionDrawable
。但事实是TransitionDrawable是在另一个类中使用

final TransitionDrawable td = new TransitionDrawable(new Drawable[] {
  new ColorDrawable(android.R.color.transparent), drawable });
其中,
drawable
是一个位图可绘制文件。但如果我试着扮演

Bitmap bmp = (BitmapDrawable) transitionDrawable.getCurrent();
然后我得到一个类强制转换异常


对于上下文,这是BitmapFun的ImageWorker第378行中的TransitionDrawable。

TransitionDrawable继承自LayerDrawable,因此您可以使用findDrawableByLayerId(int id)来获取特定的drawable

示例:使用android源代码(4.4.1)中的btn_toggle_bg.xml


背景id是由android定义的,因此R的作用域是android。如果你在自己的应用程序中创建了id,它看起来像
你能提供一个例子吗?你找到解决方案了吗?如果是,请分享。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background" android:drawable="@android:drawable/btn_default_small" />
<item android:id="@+android:id/toggle" android:drawable="@android:drawable/btn_toggle" />
</layer-list>
Drawable d = transitionDrawable.findDrawableByLayerId( android.R.id.background );
transitionDrawable.setDrawableBylayerId( android.R.id.background, new ColorDrawable(..) );