有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从可绘制资源Id解码位图的java代码为空

我想从可绘制资源id获取位图,我找到了一个使用BitmapFactory解码方法对其进行解码的解决方案,但它给出了null

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_tick);

共 (1) 个答案

  1. # 1 楼答案

    请检查您是否使用Vector drawable或普通png/jpeg图像作为可绘制图像,如果您尝试解码Vector drawable,它将提供空值

    如果您试图解码矢量可绘制文件,请使用此代码

    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;
    }
    

    还要确保你的应用程序gradle中是否启用了向量支持

    vectorDrawables.useSupportLibrary = true