Merge "Reuses Drwable#toBitmap from AndroidX" into tm-qpr-dev

This commit is contained in:
Ale Nijamkin
2022-10-06 17:26:08 +00:00
committed by Android (Google) Code Review

View File

@@ -17,8 +17,6 @@
package com.android.systemui.user.ui.compose package com.android.systemui.user.ui.compose
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.content.res.AppCompatResources
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
@@ -50,10 +48,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.graphics.painter.ColorPainter import androidx.compose.ui.graphics.painter.ColorPainter
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
@@ -62,6 +58,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.graphics.drawable.toBitmap
import com.android.systemui.common.ui.compose.load import com.android.systemui.common.ui.compose.load
import com.android.systemui.compose.SysUiOutlinedButton import com.android.systemui.compose.SysUiOutlinedButton
import com.android.systemui.compose.SysUiTextButton import com.android.systemui.compose.SysUiTextButton
@@ -356,10 +353,11 @@ private fun MenuItem(
remember(viewModel.iconResourceId) { remember(viewModel.iconResourceId) {
val drawable = val drawable =
checkNotNull(AppCompatResources.getDrawable(context, viewModel.iconResourceId)) checkNotNull(AppCompatResources.getDrawable(context, viewModel.iconResourceId))
val size = with(density) { 20.dp.toPx() }.toInt()
drawable drawable
.toBitmap( .toBitmap(
size = with(density) { 20.dp.toPx() }.toInt(), width = size,
tintColor = Color.White, height = size,
) )
.asImageBitmap() .asImageBitmap()
} }
@@ -392,32 +390,3 @@ private fun MenuItem(
), ),
) )
} }
/**
* Converts the [Drawable] to a [Bitmap].
*
* Note that this is a relatively memory-heavy operation as it allocates a whole bitmap and draws
* the `Drawable` onto it. Use sparingly and with care.
*/
private fun Drawable.toBitmap(
size: Int? = null,
tintColor: Color? = null,
): Bitmap {
val bitmap =
if (intrinsicWidth <= 0 || intrinsicHeight <= 0) {
Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888)
} else {
Bitmap.createBitmap(
size ?: intrinsicWidth,
size ?: intrinsicHeight,
Bitmap.Config.ARGB_8888
)
}
val canvas = Canvas(bitmap)
setBounds(0, 0, canvas.width, canvas.height)
if (tintColor != null) {
setTint(tintColor.toArgb())
}
draw(canvas)
return bitmap
}