Android:无法将BitmapDrawable强制转换为ClipDrawable

时间:2016-11-16 21:42:51

标签: android android-drawable android-4.3-jelly-bean bitmapdrawable

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

时得到ImageView.getDrawable()的转换错误

这是我在活动的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?我在文档中遗漏了什么吗?

1 个答案:

答案 0 :(得分:1)

ClipDrawable不会继承BitmapDrawable。

这是它的继承树:

java.lang.Object

↳android.graphics.drawable.Drawable

↳android.graphics.drawable.DrawableWrapper

↳android.graphics.drawable.ClipDrawable

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

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