feat: 为更多项目优化无障碍描述

This commit is contained in:
Super12138 2025-05-11 15:26:58 +08:00
parent c4a7930cfd
commit a92b5c5ffe
8 changed files with 43 additions and 12 deletions

View file

@ -34,7 +34,7 @@ android {
applicationId = "cn.super12138.todo"
minSdk = 24
targetSdk = 36
versionCode = 676
versionCode = 678
versionName = "2.1.2"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

View file

@ -47,8 +47,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.LiveRegionMode
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.liveRegion
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants
@ -249,7 +252,12 @@ fun TodoEditorPage(
val interactionSource = remember { MutableInteractionSource() }
Slider(
modifier = Modifier.semantics {
contentDescription = context.getString(R.string.label_priority)
contentDescription =
context.getString(R.string.label_priority) + priorityName[Priority.fromFloat(
priorityState
).ordinal]
stateDescription = priorityName[Priority.fromFloat(priorityState).ordinal]
liveRegion = LiveRegionMode.Polite
},
value = priorityState,
onValueChange = {

View file

@ -8,7 +8,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import cn.super12138.todo.ui.TodoDefaults
@Composable
fun SettingsCategory(
@ -18,7 +18,11 @@ fun SettingsCategory(
Box(
modifier = modifier
.fillMaxWidth()
.padding(top = 12.dp, start = 24.dp, end = 24.dp)
.padding(
top = TodoDefaults.settingsItemVerticalPadding / 2,
start = TodoDefaults.settingsItemHorizontalPadding,
end = TodoDefaults.settingsItemHorizontalPadding
)
) {
Text(
text = title,

View file

@ -14,6 +14,8 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.ui.TodoDefaults
@ -23,6 +25,7 @@ fun SettingsPlainBox(
text: String,
modifier: Modifier = Modifier
) {
val tipText = stringResource(R.string.tip_tips)
Column(
modifier = modifier
.fillMaxWidth()
@ -35,14 +38,16 @@ fun SettingsPlainBox(
) {
Icon(
imageVector = Icons.Outlined.Info,
contentDescription = stringResource(R.string.tip_tips)
contentDescription = null
)
Spacer(Modifier.size(20.dp))
Text(
text = text,
style = MaterialTheme.typography.bodyMedium.copy(
color = MaterialTheme.colorScheme.onSurfaceVariant
)
),
modifier = Modifier
.clearAndSetSemantics { contentDescription = "$tipText $text" }
)
}
}

View file

@ -18,8 +18,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.LiveRegionMode
import androidx.compose.ui.semantics.clearAndSetSemantics
import androidx.compose.ui.semantics.contentDescription
import androidx.compose.ui.semantics.liveRegion
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.unit.dp
import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants
@ -44,10 +48,17 @@ fun ContrastPicker(
Constants.PREF_CONTRAST_LEVEL,
Constants.PREF_CONTRAST_LEVEL_DEFAULT
)
val contrastLevelName =
ContrastLevel.entries.map { it.getDisplayName(context) }
Slider(
modifier = Modifier.semantics {
contentDescription = context.getString(R.string.tip_change_contrast_level)
contentDescription =
context.getString(R.string.pref_contrast_level) + contrastLevelName[ContrastLevel.fromFloat(
contrastState
).ordinal]
stateDescription = contrastLevelName[ContrastLevel.fromFloat(contrastState).ordinal]
liveRegion = LiveRegionMode.Polite
},
value = contrastState,
onValueChange = {
@ -63,7 +74,9 @@ fun ContrastPicker(
CompositionLocalProvider(LocalTextStyle provides MaterialTheme.typography.bodyMedium) {
Row(
modifier = Modifier.fillMaxWidth(),
modifier = Modifier
.fillMaxWidth()
.clearAndSetSemantics {},
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(stringResource(R.string.contrast_very_low))

View file

@ -1,5 +1,8 @@
package cn.super12138.todo.ui.theme
import android.content.Context
import cn.super12138.todo.R
enum class ContrastLevel(val value: Float) {
VeryLow(-1f),
Low(-0.5f),
@ -7,7 +10,7 @@ enum class ContrastLevel(val value: Float) {
Medium(0.5f),
High(1f);
/*fun getDisplayName(context: Context): String {
fun getDisplayName(context: Context): String {
val resId = when (this) {
VeryLow -> R.string.contrast_very_low
Low -> R.string.contrast_low
@ -16,7 +19,7 @@ enum class ContrastLevel(val value: Float) {
High -> R.string.contrast_very_high
}
return context.getString(resId)
}*/
}
companion object {
fun fromFloat(float: Float) = entries.find { it.value == float } ?: Default

View file

@ -73,7 +73,6 @@
<string name="contrast_default">默认</string>
<string name="contrast_high"></string>
<string name="contrast_very_high">极高</string>
<string name="tip_change_contrast_level">更改颜色对比度</string>
<string name="pref_interface_interaction">界面与交互</string>
<string name="pref_interface_interaction_desc">待办列表、触感反馈</string>
<string name="pref_show_completed">显示已完成待办</string>

View file

@ -74,7 +74,6 @@
<string name="contrast_default">Default</string>
<string name="contrast_high">High</string>
<string name="contrast_very_high">Very High</string>
<string name="tip_change_contrast_level">Change the contrast level</string>
<string name="pref_interface_interaction">Interface &amp; Interaction</string>
<string name="pref_interface_interaction_desc">To-Do List, Haptic Feedback</string>
<string name="pref_show_completed">Show Completed Tasks</string>