For #27129 - Fix accessibility for default wallpaper thumbnail

This commit is contained in:
Alexandru2909 2022-09-29 14:46:20 +03:00 committed by mergify[bot]
parent 69849cafa4
commit 31e9f69aae
1 changed files with 20 additions and 5 deletions

View File

@ -40,6 +40,8 @@ import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
@ -257,6 +259,21 @@ private fun WallpaperThumbnailItem(
// Completely avoid drawing the item if a bitmap cannot be loaded and is required
if (bitmap == null && wallpaper != defaultWallpaper) return
val description = stringResource(
R.string.wallpapers_item_name_content_description,
wallpaper.name,
)
// For the default wallpaper to be accessible, we should set the content description for
// the Surface instead of the thumbnail image
val contentDescriptionModifier = if (bitmap == null) {
Modifier.semantics {
contentDescription = description
}
} else {
Modifier
}
Surface(
elevation = 4.dp,
shape = thumbnailShape,
@ -265,16 +282,14 @@ private fun WallpaperThumbnailItem(
.fillMaxWidth()
.aspectRatio(aspectRatio)
.then(border)
.clickable { onSelect(wallpaper) },
.clickable { onSelect(wallpaper) }
.then(contentDescriptionModifier),
) {
bitmap?.let {
Image(
bitmap = it.asImageBitmap(),
contentScale = ContentScale.FillBounds,
contentDescription = stringResource(
R.string.wallpapers_item_name_content_description,
wallpaper.name,
),
contentDescription = description,
modifier = Modifier.fillMaxSize(),
alpha = if (isLoading) loadingOpacity else 1.0f,
)