当前位置: 首页 > news >正文

Compose 适配 - 键鼠模式

一、概念

不止触摸交互,在 ChromeOS 或外接键鼠的设备上,需要考虑焦点、悬停、右键等操作逻辑。

二、使用

2.1 焦点

使用 Tab 键来导航,改变边框以提供清晰的焦点指示器。

@Composable
fun Demo() {val interactionSource = remember { MutableInteractionSource() }val isFocused by interactionSource.collectIsFocusedAsState()val border = BorderStroke(width = if (isFocused) 3.dp else 1.dp,color = if (isFocused) Color.Red else Color.Black)Box(modifier = Modifier.focusable(interactionSource = interactionSource).border(border)) {}
}

2.2 右键

右键/长按,表示更多选项。

@Composable
fun Demo() {var showMore by rememberSaveable { mutableStateOf(false) }var pressOffset by remember { mutableStateOf(DpOffset.Zero) }Box(modifier = Modifier.pointerInput(Unit) {detectTapGestures(onLongPress = { offset ->pressOffset = DpOffset(offset.x.toDp(), offset.y.toDp())showMore = true})}) {DropdownMenu(expanded = showMore,onDismissRequest = { showMore = false },offset = pressOffset) {DropdownMenuItem(text = { Text("AAA") }, onClick = {  })DropdownMenuItem(text = { Text("BBB") }, onClick = {  })}}
}

2.3 悬停

让组件感知鼠标悬停,改变背景色。

@Composable
fun Demo() {val interactionSource = remember { MutableInteractionSource() }val isHovered by interactionSource.collectIsHoveredAsState()val backgroundColor = if (isHovered) Color.Gray else Color.WhiteBox(modifier = Modifier.hoverable(interactionSource = interactionSource).background(backgroundColor)) { }
}
http://www.lryc.cn/news/598221.html

相关文章:

  • 图像认知与OpenCV——图像预处理2
  • 到底可不可以用jion?jion如何优化?
  • 【学习】数字化车间与智能工厂如何推进制造业转型
  • MIT线性代数02_矩阵消元
  • 云祺容灾备份系统AWS S3对象存储备份与恢复实操手册
  • 电商项目_秒杀_架构升级
  • 4G手机控车模块的核心功能与应用价值
  • 告别束缚:这款“隐形心电监测仪”让心脏健康管理更自由
  • Oracle 时间处理函数和操作符笔记
  • Python-初学openCV——图像预处理(二)
  • 服务器带宽具体是指什么意思?
  • 硅基计划3.0 学习总结 贰 顺序表与链表
  • 图论:搜索问题
  • 深度分析Android多线程编程
  • Leetcode力扣解题记录--第2题(加法模拟)
  • ESP32S3 Ubuntu vscode如何使用USB-JTAG调试
  • 【开源】WPF的数据可视化大屏解决方案——WpfMap
  • C++课设实践项目:C++构建的学籍管理系统
  • Cisco 主模式配置
  • SGLang + 分布式推理部署DeepSeek671B满血版
  • JavaSE:开发环境的搭建(Eclipse)
  • Java与NLP实战:文本处理到情感分析全解析
  • 【ECharts✨】解决Vue 中 v-show 导致组件 ECharts 样式异常问题
  • [AI 生成] Flink 面试题
  • 【论文阅读】REVISITING DEEP AUDIO-TEXT RETRIEVAL THROUGH THE LENS OF TRANSPORTATION
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • 人形机器人加快先进AI机器人开发
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • 实时云渲染将UE像素流嵌入业务系统,实现二维管理系统与数字孪生三维可视化程序的无缝交互
  • 小程序生命周期及页面操作执行过程详解