feat(accessibility): 优化无障碍表现

This commit is contained in:
Super12138 2025-02-12 17:19:54 +08:00
parent f6f6f565a1
commit b16c2c2a85
5 changed files with 28 additions and 49 deletions

View file

@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeContent
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.Scaffold
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
@ -36,8 +37,8 @@ import androidx.window.core.layout.WindowWidthSizeClass
import cn.super12138.todo.R
import cn.super12138.todo.constants.Constants
import cn.super12138.todo.logic.database.TodoEntity
import cn.super12138.todo.ui.components.AnimatedExtendedFloatingActionButton
import cn.super12138.todo.ui.components.WarningDialog
import cn.super12138.todo.ui.pages.main.components.TodoFAB
import cn.super12138.todo.ui.pages.main.components.TodoTopAppBar
import cn.super12138.todo.ui.viewmodels.MainViewModel
@ -103,7 +104,9 @@ fun MainPage(
exit = shrinkOut() + fadeOut()
) {
// TODO: 修复在滑动列表时FAB位移导致的动画不连贯临时方案为底部加padding
TodoFAB(
AnimatedExtendedFloatingActionButton(
icon = Icons.Outlined.Add,
text = stringResource(R.string.action_add_task),
expanded = true,
onClick = {
viewModel.setEditTodoItem(null) // 每次添加待办前清除上一次已选待办

View file

@ -1,34 +0,0 @@
package cn.super12138.todo.ui.pages.main.components
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material3.FloatingActionButtonDefaults
import androidx.compose.material3.FloatingActionButtonElevation
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import cn.super12138.todo.R
import cn.super12138.todo.ui.components.AnimatedExtendedFloatingActionButton
/**
* 待办页面底部 FAB
*
* @param expanded 是否为展开状态展开状态显示内容和图标收起状态只显示图标
* @param onClick 当点击 FAB 时的回调
*/
@Composable
fun TodoFAB(
expanded: Boolean,
onClick: () -> Unit,
elevation: FloatingActionButtonElevation = FloatingActionButtonDefaults.elevation(),
modifier: Modifier = Modifier
) {
AnimatedExtendedFloatingActionButton(
icon = Icons.Outlined.Add,
text = stringResource(R.string.action_add_task),
expanded = expanded,
elevation = elevation,
onClick = onClick,
modifier = modifier
)
}

View file

@ -20,6 +20,7 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp
import cn.super12138.todo.utils.VibrationUtils
@ -38,10 +39,13 @@ fun DarkModeItem(
Column(
modifier = modifier
.clip(MaterialTheme.shapes.large)
.clickable {
VibrationUtils.performHapticFeedback(view)
onSelect()
}
.clickable(
role = Role.Button,
onClick = {
VibrationUtils.performHapticFeedback(view)
onSelect()
}
)
.padding(8.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
@ -58,7 +62,7 @@ fun DarkModeItem(
) {
Icon(
imageVector = icon,
contentDescription = contentDescription,
contentDescription = null,
tint = contentColor,
modifier = Modifier
.size(30.dp)

View file

@ -67,10 +67,12 @@ fun LicenceList(
}
},
confirmButton = {
FilledTonalButton(onClick = {
openDialog = false
VibrationUtils.performHapticFeedback(view)
}) { Text(stringResource(R.string.action_confirm)) }
FilledTonalButton(
onClick = {
openDialog = false
VibrationUtils.performHapticFeedback(view)
}
) { Text(stringResource(R.string.action_confirm)) }
},
onDismissRequest = { openDialog = false }
)

View file

@ -25,6 +25,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.unit.dp
import androidx.compose.ui.util.fastForEach
import cn.super12138.todo.constants.GlobalValues
@ -48,10 +49,13 @@ fun PaletteItem(
modifier = Modifier
.width(90.dp)
.clip(MaterialTheme.shapes.large)
.clickable {
VibrationUtils.performHapticFeedback(view)
onSelect()
}
.clickable(
role = Role.Button,
onClick = {
VibrationUtils.performHapticFeedback(view)
onSelect()
}
)
.padding(8.dp),
horizontalAlignment = Alignment.CenterHorizontally,
) {