从Drawable Resource Id解码位图给出null

Mar*_*wed 5 java android android-bitmap

我想从可绘制资源ID中获取Bitmap,我找到了一种使用BitmapFactory解码方法对其进行解码的解决方案,但它给出了null。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_tick);
Run Code Online (Sandbox Code Playgroud)

Ham*_*han 4

请检查您是否使用矢量可绘制对象或普通 png/jpeg 图像作为可绘制对象,如果您尝试解码矢量可绘制对象,它会给出 null 值。

如果您尝试解码 Vector 可绘制对象,请使用此代码

public static Bitmap getBitmapFromVectorDrawable(Context context, int drawableId) {
Drawable drawable = ContextCompat.getDrawable(context, drawableId);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    drawable = (DrawableCompat.wrap(drawable)).mutate();
}

Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
        drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);

return bitmap;
}
Run Code Online (Sandbox Code Playgroud)

另请确保您的应用程序 gradle 中是否启用了矢量支持

vectorDrawables.useSupportLibrary = true
Run Code Online (Sandbox Code Playgroud)