手势学习

1. 点击手势

@Composable
fun ClickableSample() {val number = remember {mutableStateOf(0)}Text(text = number.value.toString(),textAlign = TextAlign.Center,modifier = Modifier.wrapContentSize().clickable {number.value++}.background(Color.LightGray).padding(horizontal = 50.dp, vertical = 40.dp))}
@Composable
fun ClickableSample() {val number = remember {mutableStateOf(0)}Text(text = number.value.toString(),textAlign = TextAlign.Center,modifier = Modifier.wrapContentSize()
//            .clickable {
//                number.value++
//            }.pointerInput(Unit){detectTapGestures(onPress = { number.value =1 },//按onDoubleTap = { number.value=9 },//双击onLongPress = {number.value=10},//长按onTap = {number.value = 3}//按下松开)}.background(Color.LightGray).padding(horizontal = 50.dp, vertical = 40.dp))}

2. 滚动修饰符

内部改变状态 

// 滚动修饰符
@Composable
fun ScrollBoxes(){Column(Modifier.background(Color.LightGray).size(100.dp).verticalScroll(rememberScrollState())) {//从零开始的repeat(10){Text(text = "ite, $it",Modifier.padding(2.dp))}}

外部改变状态

//借助ScrollState,您可以更改滚动位置或获取当前状态
@Composable
fun ScrollBoxesSmooth() {val state = rememberScrollState()// 设置一个较慢的动画过渡时间val animationSpec = TweenSpec<Float>(durationMillis = 1000)LaunchedEffect(Unit) {//慢慢滚动变成100state.animateScrollTo(300,animationSpec)}Column(Modifier.background(Color.LightGray).size(100.dp).verticalScroll(state)) {//从零开始的repeat(10) {Text(text = "item $it", Modifier.padding(2.dp))}}
}

3.可滚动修饰符 

//可滚动的修饰符
//scrollable 修饰符与滚动修饰符不同,区别在于scrollable 可检测滚动手势,但不会便宜其内容.
@Composable
fun ScrollableSample(){val offset = remember {mutableStateOf(0f)}Box(modifier =Modifier.size(150.dp).scrollable(orientation = Orientation.Vertical,state = rememberScrollableState { delta ->offset.value += delta//像素为单位delta}).background(Color.LightGray),contentAlignment = Alignment.Center){Text(text =offset.value.toString() )}}

 4. 嵌套滚动

//嵌套滚动
@Composable
fun NestedScrollSample(){val  gradient = Brush.verticalGradient(0f to Color.Gray,1000f to Color.White)Box(modifier = Modifier.background(Color.LightGray).verticalScroll(rememberScrollState()).padding(32.dp)){Column {repeat(6){Box(modifier = Modifier.height(128.dp).verticalScroll(rememberScrollState())){Text(text = "Scroll here",modifier = Modifier.border(12.dp, Color.DarkGray).background(brush = gradient).padding(24.dp).height(150.dp))//Text 高度大于外部容器Box的高度}}}}
}

 5.拖动

//拖动
@Composable
fun DraggableSample() {var offsetX by remember { mutableStateOf(0f) }var offsetY by remember { mutableStateOf(0f) }Box(modifier = Modifier.draggable(orientation = Orientation.Horizontal,state = rememberDraggableState {offsetX += it}) .draggable(orientation = Orientation.Vertical,state = rememberDraggableState {offsetY += it}).offset(x = offsetX.dp, y = offsetY.dp).background(Color.Yellow)){Text(text = "Drag me!", textAlign = TextAlign.Center, modifier = Modifier.padding(30.dp))}
}

//拖动 如果您需要控制整个拖动手势,请考虑改为通过pointerInput修饰符使用拖动手势检测器
@Composable
fun DraggableWhereYouWantSample() {Box(modifier = Modifier.fillMaxSize()) {var offsetX by remember { mutableStateOf(0f) }var offsetY by remember { mutableStateOf(0f) }Box(modifier = Modifier.offset { IntOffset(offsetX.roundToInt(), offsetY.roundToInt()) }.background(Color.Blue).size(50.dp).pointerInput(Unit){//拖动的手势detectDragGestures { change, dragAmount ->offsetX+=dragAmount.xoffsetY+=dragAmount.y}}.align(Alignment.BottomEnd))}}

6.滑动

新版本被废弃了

7.多点触控 

//多点触控:平移 缩放 旋转
@Composable
fun TransformableSample(){var scale by remember {mutableStateOf(1f)//缩放}var rotation by remember {mutableStateOf(0f)//旋转}var offset by remember {mutableStateOf(Offset.Zero)//平移}val state = rememberTransformableState{zoomChange//缩放, panChange//平移, rotationChange//旋转->scale*=zoomChangerotation+=rotationChangeoffset+=panChange}Box(modifier = Modifier.graphicsLayer(scaleX = scale,scaleY = scale,rotationZ = rotation,translationX = offset.x,translationY = offset.y).transformable(state =  state).background(Color.Blue).size(100.dp,200.dp))
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/535070.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以102flowers数据集为例训练ResNet50模型

以102flowers数据集为例训练ResNet50模型 使用飞桨高阶API&#xff0c;使用最少的代码量&#xff0c;实现在102flowers数据集训练ResNet50模型。同时可以一条命令修改成Mnist、Cifar10、Cifar100等数据集&#xff0c;换成其它模型也是只需要一句话代码。 数据集介绍 102flowe…

深入理解Apache Commons Pool2池化技术

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在现代软件开发中&#xff0c;为了提高性能和资源利用率&#xff0c;开发者们经常使用池化技术来管理那些创建和销毁代价较高的对…

SpringController返回值和异常自动包装

今天遇到一个需求&#xff0c;在不改动原系统代码的情况下。将Controller的返回值和异常包装到一个统一的返回对象中去。 例如原系统的接口 public String myIp(ApiIgnore HttpServletRequest request);返回的只是一个IP字符串"0:0:0:0:0:0:0:1"&#xff0c;目前接口…

t_t 你们到底是从哪儿找的那种拿我当制杖一样教的简单的纯HTML模板的呀?

在这个万物vue的年代&#xff0c;网页设计越来越框架化。 上网搜个资料学习学习吧&#xff0c;咵咵咵&#xff0c;“游泳健身&#xff0c;vue了解一下” 我只是想简单地学个html&#xff0c;js啊&#xff01;怎么就这么复杂&#xff01; 曾几何时&#xff0c;在网上找个网页…

I2C学习总结

i2c概述 I2C&#xff08;Inter-Intergreted Circuit&#xff09; 是一种串行通信协议&#xff0c;用于集成电路之间完成数据传输&#xff0c;i2c用广泛用以各种领域&#xff0c;包括电子设备、嵌入式系统、工业自动化等&#xff1b; i2c仅仅只是一个数据传输的协议&#xff0c…

Splitpanes拆分窗格插件使用

目录 基本用法 纵向排列 遍历渲染 动态拆分宽度 项目开发中用到了拆分窗格(就是下面的效果&#xff0c;可以拆分网页&#xff0c;我们项目通常都是用左右两块拆分&#xff0c;可以通过拖动图标进行左右拖动)&#xff0c;于是就发现了一个很好用的插件&#xff1a;Splitpane…

2024年AI辅助研发:科技创新的引擎

CSND - 个人主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《人工智能》 技术进展 进入2024年&#xff0c;人工智能&#xff08;AI&#xff09;在科技界和工业界的焦点地位更加巩固&#xff0c;其在辅助研发领域的技术进步尤为显著。深度学习技术的突飞猛进使得数据分…

1.Python是什么?——《跟老吕学Python编程》

1.Python是什么&#xff1f;——《跟老吕学Python编程》 Python是一种什么样的语言&#xff1f;Python的优点Python的缺点 Python发展历史Python的起源Python版本发展史 Python的价值学Python可以做什么职业&#xff1f;Python可以做什么应用&#xff1f; Python是一种什么样的…

图片格式转换怎么操作?这一个方法快快收藏

图片格式转换能够改变图片的质量、大小兼容性。不同的图片格式用途也不同&#xff0c;当我们需要转换图片格式的时候要怎么操作呢&#xff1f;下面&#xff0c;小编给大家分享一款操作简单&#xff0c;小白也能轻松上手的图片转换器&#xff08;https://www.yasuotu.com/geshi&…

“光谱视界革新:ChatGPT在成像光谱遥感中的智能革命“

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

【SpringBoot】整合Druid数据源和Mybatis 项目打包和运行

文章目录 一、整合Druid数据源二、整合Mybatis2.1 MyBatis整合步骤2.1 Mybatis整合实践2.1 声明式事务整合配置2.1 AOP整合配置 三、项目打包和运行命令启动和参数说明 总结web 与 springboot 打包区别JDK8的编译环境 执行17高版本jar 一、整合Druid数据源 创建模块 &#xff1…

BEVFormer代码运行笔记

1. 代码下载 git clone https://github.com/fundamentalvision/BEVFormer.git 2. 环境配置 使用conda创建环境 conda create -n open-mmlab python3.8 -y 进入环境 conda activate open-mmlab 允许使用pip安装依赖库 export PIP_REQUIRE_VIRTUALENVfalse 安装pytorch和…