NinePatchDrawable无法强制转换为android.graphics.drawable.BitmapDrawable

时间:2016-01-12 17:55:48

标签: android bitmap android-drawable nine-patch

我在imageview中使用了九个可绘制的补丁,并使用下面的代码我想获取Bitmap但是会发生此错误。

 Bitmap stickerBitmap = ((BitmapDrawable) Front.getDrawable()).getBitmap();

1 个答案:

答案 0 :(得分:0)

您无法直接将NinePatchDrawable投射到BitmapDrawable,因为这是两种不同的不兼容的可绘制类型。

如果你想从非BitmapDrawable获取一个Bitmap,你必须用Canvas将它绘制到一个Bitmap上:

Drawable drawable = Front.getDrawable();
Bitmap stickerBitmap = Bitmap.createBitmap(Front.getWidth(),
        Front.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(stickerBitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);

请注意,必须对ImageView进行布局,使其大小非为零。