You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

接入LuckyWheel库时出现Bitmap.getWidth()空对象引用报错如何解决

报错根因

你遇到的空指针问题核心原因是:BitmapFactory.decodeResource() 仅支持解码PNG、JPG等位图格式资源,无法直接解析XML格式的矢量Drawable,调用后会返回null,传入WheelItem后库内部调用Bitmap的getWidth()方法就触发了空指针异常。

解决方案

步骤1:添加矢量Drawable转Bitmap的工具方法

在你的MainActivity里添加如下扩展方法:

import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import androidx.core.content.ContextCompat
import android.graphics.drawable.Drawable

fun Context.vectorToBitmap(drawableId: Int): Bitmap? {
    val drawable: Drawable = ContextCompat.getDrawable(this, drawableId) ?: return null
    val bitmap = Bitmap.createBitmap(
        drawable.intrinsicWidth,
        drawable.intrinsicHeight,
        Bitmap.Config.ARGB_8888
    )
    val canvas = Canvas(bitmap)
    drawable.setBounds(0, 0, canvas.width, canvas.height)
    drawable.draw(canvas)
    return bitmap
}

步骤2:替换原有Bitmap生成逻辑

把原来用BitmapFactory.decodeResource的地方全部替换为调用上面的vectorToBitmap方法,修改后的WheelItem添加代码示例:

wheelItems.add(
    WheelItem(
        Color.LTGRAY,
        vectorToBitmap(R.drawable.ic_baseline_timer_24), 
        "1"
    )
)
// 其余5个WheelItem的Bitmap生成逻辑全部按上面的格式替换即可

补充注意事项

  • 如果矢量图本身没有设置固有宽高,你可以手动在createBitmap的位置指定你需要的宽高数值,比如统一设置为100px*100px适配转盘显示
  • 确保所有矢量drawable资源都放在通用drawable目录下,不要只放在drawable-v24等限定目录,避免低版本系统找不到资源返回空

内容的提问来源于stack exchange,提问作者Siniestre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:48:02