我正在尝试使用Android Jellybean (SDK 18)实现一个简单的ClipDrawable。我不明白为什么我得到的转换错误ImageView.getDrawable()当它返回一个Drawable,而不是BitmapDrawable
下面是我在一个活动的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。
是它的继承树:
. lang。对象
android.graphics.drawable.DrawableWrapper
要将BitmapDrawable转换为ClipDrawable,可以执行以下操作:
ImageView image = (ImageView) findViewById(R.id.guage_one);
ClipDrawable clipDrawable = new ClipDrawable(image.getDrawable(), Gravity.LEFT, ClipDrawable.HORIZONTAL);