【问题标题】:canvas.drawBitmap - Software rendering doesn't support hardware bitmapscanvas.drawBitmap - 软件渲染不支持硬件位图
【发布时间】:2019-06-23 10:47:47
【问题描述】:

简单有趣

fun getCircleBitmap(bitmap: Bitmap, recycle: Boolean): Bitmap {
        val paint = Paint()
        paint.isAntiAlias = true
        paint.color = Color.WHITE
        paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN)

        val rect = Rect(0, 0, bitmap.width, bitmap.height)
        val rectF = RectF(rect)

        val output = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)

        val canvas = Canvas(output)
        canvas.drawARGB(0, 0, 0, 0)
        canvas.drawOval(rectF, paint)
        canvas.drawBitmap(bitmap, rect, rect, paint)

        if (recycle) {
            bitmap.recycle()
        }

        return output
    }

Tget API 29. 模拟器 API 28. Kotlin 1.3.40。 大约一个月前,这种乐趣奏效了。但现在出现“canvas.drawBitmap”错误“软件渲染不支持硬件位图”。尝试 android:hardwareAccelerated="false" - 同样的错误。为什么?

【问题讨论】:

    标签: android canvas kotlin bitmap


    【解决方案1】:

    所以,我的解决方案:

    fun getCircleBitmapDrawable(bitmap: Bitmap): RoundedBitmapDrawable {
            val round = RoundedBitmapDrawableFactory.create(context.resources, bitmap)
            round.isCircular = true
            round.setAntiAlias(true)
    
            return round
        }
    

    【讨论】: