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

NinePatchDrawable cannot be cast to android.graphics.drawable.BitmapDrawable

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

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

您不能直接将 NinePatchDrawable 转换为 BitmapDrawable,因为它们是两种不同的不兼容绘图类型。

如果您想从 non-BitmapDrawable 获取位图,您必须使用 Canvas 将其绘制到位图上:

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 的布局必须使其具有 non-zero 大小。