canvas.drawBitmap - программный рендеринг не поддерживает аппаратные растровые изображения - PullRequest
1 голос
/ 23 июня 2019

просто весело

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
    }

Taget API 29. Эмулятор API 28. Котлин 1.3.40. Около месяца назад это веселье сработало. Но теперь в "canvas.drawBitmap" ошибка "Рендеринг программного обеспечения не поддерживает аппаратные растровые изображения". Попробуйте android: hardwareAccelerated = "false" - та же ошибка. Почему?

1 Ответ

0 голосов
/ 23 июня 2019

Итак, мое решение:

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

        return round
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...