diff options
| author | 2024-05-22 17:46:27 +0000 | |
|---|---|---|
| committer | 2024-05-22 17:57:19 +0000 | |
| commit | 5129b5fe7cee819811d0fd166176e54ca139cd82 (patch) | |
| tree | 865b8a087a3f92294a2a6a6c7c64ec32694523b8 /java | |
| parent | 25c04565081fd8643e04f88e004fc09ac1c73ff3 (diff) | |
Content description fixes for shareousel
- Remove hard-coded descriptions.
- Describe items based upon content type.
- Switch from clickable to toggleable to get accessibility state
descriptions.
Bug: 328791503
Test: Manual testing with talkback.
Flag: android.service.chooser.chooser_payload_toggling
Change-Id: Ia5fe1b08015a1f7a9bd0a386b5318f871dde33be
Diffstat (limited to 'java')
3 files changed, 28 insertions, 5 deletions
diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 32c61327..c026ee59 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -322,7 +322,17 @@ <!-- Title for a button. Adds back a (previously excluded) web link into the shared content. --> <string name="include_link">Include link</string> - <!-- Accesssibility content description for a sharesheet target that has been pinned to the + <!-- Accessibility content description for a sharesheet target that has been pinned to the front of the list by the user. [CHAR LIMIT=NONE] --> <string name="pinned">Pinned</string> + + <!-- Accessibility content description for an image that the user may select for sharing. + [CHAR LIMIT=NONE] --> + <string name="selectable_image">Selectable image</string> + <!-- Accessibility content description for a video that the user may select for sharing. + [CHAR LIMIT=NONE] --> + <string name="selectable_video">Selectable video</string> + <!-- Accessibility content description for an item that the user may select for sharing. + [CHAR LIMIT=NONE] --> + <string name="selectable_item">Selectable item</string> </resources> diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt index f33558c7..0efaa3bb 100644 --- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt +++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselCardComposable.kt @@ -58,7 +58,7 @@ fun ShareouselCard( private fun AnimationIcon(modifier: Modifier = Modifier) { Icon( painterResource(id = R.drawable.ic_play_circle_filled_24px), - "animating", + contentDescription = null, // Video attribute described at a higher level. tint = Color.White, modifier = Modifier.size(20.dp).then(modifier) ) @@ -71,7 +71,7 @@ private fun SelectionIcon(selected: Boolean, modifier: Modifier = Modifier) { Icon( painter = painterResource(id = R.drawable.checkbox), tint = Color.White, - contentDescription = "selected", + contentDescription = null, modifier = Modifier.shadow( elevation = 50.dp, diff --git a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt index 85ad6ab3..32aa7eee 100644 --- a/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt +++ b/java/src/com/android/intentresolver/contentpreview/payloadtoggle/ui/composable/ShareouselComposable.kt @@ -18,7 +18,6 @@ package com.android.intentresolver.contentpreview.payloadtoggle.ui.composable import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -34,6 +33,7 @@ import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.selection.toggleable import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.AssistChip import androidx.compose.material3.AssistChipDefaults @@ -49,6 +49,9 @@ import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.dimensionResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.intentresolver.R @@ -113,6 +116,12 @@ private fun ShareouselCard(viewModel: ShareouselPreviewViewModel) { viewModel.contentType.collectAsStateWithLifecycle(initialValue = ContentType.Image) val borderColor = MaterialTheme.colorScheme.primary val scope = rememberCoroutineScope() + val contentDescription = + when (contentType) { + ContentType.Image -> stringResource(R.string.selectable_image) + ContentType.Video -> stringResource(R.string.selectable_video) + else -> stringResource(R.string.selectable_item) + } ShareouselCard( image = { // TODO: max ratio is actually equal to the viewport ratio @@ -140,8 +149,12 @@ private fun ShareouselCard(viewModel: ShareouselPreviewViewModel) { shape = RoundedCornerShape(size = 12.dp), ) } + .semantics { this.contentDescription = contentDescription } .clip(RoundedCornerShape(size = 12.dp)) - .clickable { scope.launch { viewModel.setSelected(!selected) } }, + .toggleable( + value = selected, + onValueChange = { scope.launch { viewModel.setSelected(it) } }, + ) ) } |