feat(accessibility): 优化无障碍表现
This commit is contained in:
parent
f6f6f565a1
commit
b16c2c2a85
5 changed files with 28 additions and 49 deletions
|
|
@ -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) // 每次添加待办前清除上一次已选待办
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue