Android: 无法将 BitmapDrawable 转换为 ClipDrawable

Android: cannot cast BitmapDrawable to a ClipDrawable

我正在尝试使用 Android Jellybean (SDK 18) 实现一个简单的 ClipDrawable。我不明白为什么当 returns 是 Drawable 而不是 BitmapDrawable

时我会收到 ImageView.getDrawable() 的转换错误

这是我在 activity:

的 onCreate() 中的相关代码
    ImageView image = (ImageView) findViewById(R.id.guage_one);
    ClipDrawable drawable = (ClipDrawable) image.getDrawable();
    drawable.setLevel(10000);

为什么我会为此得到 ClassCastException?我知道 BitmapDrawable 和 ClipDrawable 是 Drawable 的子类,所以你不能将它们相互转换,我知道这一点。但是为什么 image.getDrawable() 返回一个 BitmapDrawable 而不仅仅是一个 drawable?我在文档中遗漏了什么吗?

ClipDrawable 不继承 BitmapDrawable。

这是它的继承树:

java.lang.Object

↳ android.graphics.drawable.Drawable

↳ android.graphics.drawable.Drawable包装纸

↳ android.graphics.drawable.ClipDrawable

要将 BitmapDrawable 转换为 ClipDrawable,您可以执行以下操作:

ImageView image = (ImageView) findViewById(R.id.guage_one);
ClipDrawable clipDrawable = new ClipDrawable(image.getDrawable(), Gravity.LEFT, ClipDrawable.HORIZONTAL);