From 8397279b35919858e3ca4cfe43eb4b3abf6b600e Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 13 Jul 2022 16:06:18 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../wallet/ui/images/CurrencyIconRequest.kt | 10 +--- .../RoundedCornersCropTransformation.kt | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/com/tangem/tap/features/wallet/ui/images/RoundedCornersCropTransformation.kt diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt index fb75bc6474..e2cc94ef12 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/CurrencyIconRequest.kt @@ -5,7 +5,6 @@ import android.widget.TextView import androidx.constraintlayout.utils.widget.ImageFilterView import coil.imageLoader import coil.request.ImageRequest -import coil.transform.RoundedCornersTransformation import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.IconsUtil import com.tangem.blockchain.common.Token @@ -135,14 +134,7 @@ private inline fun ImageView.loadIcon( .placeholder(placeholderRes) .error(placeholderRes) .fallback(placeholderRes) - .transformations( - RoundedCornersTransformation( - topLeft = 32f, - topRight = 32f, - bottomLeft = 32f, - bottomRight = 32f - ) - ) + .transformations(RoundedCornersCropTransformation(16f)) .listener( onStart = { onStart() }, onSuccess = { _, _ -> onSuccess() }, diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/images/RoundedCornersCropTransformation.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/RoundedCornersCropTransformation.kt new file mode 100644 index 0000000000..7a9b0a3015 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/images/RoundedCornersCropTransformation.kt @@ -0,0 +1,58 @@ +package com.tangem.tap.features.wallet.ui.images + +import android.graphics.Bitmap +import android.graphics.BitmapShader +import android.graphics.Matrix +import android.graphics.Paint +import android.graphics.RectF +import android.graphics.Shader +import androidx.annotation.Px +import androidx.core.graphics.applyCanvas +import coil.size.Size +import coil.size.pxOrElse +import coil.transform.Transformation + +class RoundedCornersCropTransformation( + @Px val radiusPx: Float, +) : Transformation { + override val cacheKey: String = "${javaClass.name}-$radiusPx" + + override suspend fun transform(input: Bitmap, size: Size): Bitmap { + val outputWidth = size.width.pxOrElse { Int.MAX_VALUE } + val outputHeight = size.height.pxOrElse { Int.MAX_VALUE } + val outputSize = minOf(outputWidth, outputHeight) + val output = Bitmap.createBitmap(outputSize, outputSize, Bitmap.Config.ARGB_8888) + + val rect = RectF( + /* left = */ 0f, + /* top = */ 0f, + /* right = */ outputWidth.toFloat(), + /* bottom = */ outputHeight.toFloat() + ) + val matrix = Matrix().apply { + setTranslate( + /* dx = */ (outputWidth - input.width) * .5f, + /* dy = */ (outputHeight - input.height) * .5f + ) + } + val bitmapShader = BitmapShader( + /* bitmap = */ input, + /* tileX = */ Shader.TileMode.DECAL, + /* tileY = */ Shader.TileMode.DECAL + ).apply { + setLocalMatrix(matrix) + } + val paint = Paint(Paint.ANTI_ALIAS_FLAG or Paint.FILTER_BITMAP_FLAG).apply { + shader = bitmapShader + } + + return output.applyCanvas { + drawRoundRect( + /* rect = */ rect, + /* rx = */ radiusPx, + /* ry = */ radiusPx, + /* paint = */ paint + ) + } + } +} \ No newline at end of file