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);
我正在尝试使用 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);