BitmapFactory.decodeResource 返回为 null 的问题

当使用BitmapFactory.decodeResource方法在Android系统中加载资源时,遇到在API 26及以上版本返回null的异常。原因是该方法无法正确处理特定类型的资源,而APK为了向下兼容会在编译时生成对应版本的资源。在API 26以上的系统运行时,实际使用的资源类型与预期不符,导致空指针异常。为解决此问题,需要调整资源处理方式以确保在所有目标版本上都能正确运行。
摘要由CSDN通过智能技术生成

问题代码:

Bitmap bmp = BitmapFactory.decodeResource(resources, R.drawable.ic_image);

其中 R.drawable.ic_image ,此代码在 4.4 上运行正常,但在 5.0 以上的系统会出现空指针,原因在于此本来方法不能将 vector 转化为 bitmap ,而apk编译时为了向下兼容,会根据 vector 生产相应的 png ,而 4.4 的系统运行此代码时其实用的是 png 资源。这就是为什么 5.0 以上会报错,而 4.4 不会的原因。

解决方案:

private static Bitmap getBitmap(Context context, int vectorDrawableId) {
    Bitmap bitmap = null;
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
        Drawable vectorDrawable = context.getDrawable(vectorDrawableId);
        bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值