CircleTransform Не работает с Пикассо на Android P - PullRequest
0 голосов
/ 27 октября 2018

Я использую широко используемое CircleTransform для получения круглого изображения с последней общедоступной версией Пикассо (2.71828) . Он работает отлично для предварительных версий Pie , но в моем эмуляторе Android P Пикассо не может окружность преобразовать изображение. Я использую преобразование окружности:

class CircleTransform : Transformation {
    override fun transform(source: Bitmap): Bitmap {
        val size = Math.min(source.width, source.height)

        val x = (source.width - size) / 2
        val y = (source.height - size) / 2

        val squaredBitmap = Bitmap.createBitmap(source, x, y, size, size)
        if (squaredBitmap != source) {
            source.recycle()
        }

        val bitmap = Bitmap.createBitmap(size, size, source.config)

        val canvas = Canvas(bitmap)
        val paint = Paint()
        val shader = BitmapShader(squaredBitmap,
                Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
        paint.shader = shader
        paint.isAntiAlias = true

        val r = size / 2f
        canvas.drawCircle(r, r, r, paint)

        squaredBitmap.recycle()
        return bitmap
    }

    override fun key(): String {
        return "circle"
    }
}

Есть идеи, как это можно исправить?

...