Jetpack:025-Jetpack中的多点触控事件

news2024/11/17 23:28:24

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 缩放事件
    • 2.2 旋转事件
    • 2.3 平移事件
    • 2.4 综合事件
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了Jetpack中滚动事件相关的内容,本章回中主要介绍 多点解控事件。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在本章回中介绍的多点触控事件是指通过多个手指同时操作,此时会发出相关的事件,这些事件包含,缩放,旋转和平移。常见的使用场景是查看图片,通过手指操作图片,此时可以使用多个手指来对图片进行缩放,旋转和平移。

这种多点触控操作最早是IOS平台上实现的,现在在Android平台上也支持这种操作,早期使用View开发时就没有这种多点触控事件,没有想到Andoird在compose中提供了多点触控事件,接下来让我们一起看看它的使用方法吧。

2. 使用方法

多点触控事件分为缩放,旋转和平移这三种,每一种事件都对应一个修饰符,接下来我们将分别介绍与这些事件对应的修饰符。

2.1 缩放事件

缩放事件就是对组件进行放大或者缩小操作时发出的事件,它通过多个手指靠拢或者松开来实现,与该事件对应的修饰符是scale,给它传递一个参数来表示缩放的比率。

2.2 旋转事件

旋转事件就是对组件进行转动操作时发出的事件,它通过多个手指转动来实现,与该事件对应的修饰符是rotate,给它传递一个参数来表示旋转的角度。

2.3 平移事件

平移事件就是对组件进行移动操作时发出的事件,它通过多个手指向某个方向移动来实现,与该事件对应的修饰符是transformable,给它传递一个参数来表示平移的信息,该值是状态值,可以包含缩放,旋转相关的信息。

2.4 综合事件

综合事件是指对组件进行缩放,旋转,平移综合操作时发出的事件,与该事件对应的操作符是graphicsLayer修饰符,该修饰符提供了scaleX,scaleY等相关的参数来控制综合事件的参数,参数的名称与事件相对应,因此我就不一一介绍这些参数了。

我们在上面介绍的多点触控操事件中,可以单独使用某种事件,也可以把多种事件放在一起综合使用,我们将在后面的小节中通过示例代码来演示。当然了,大家也可以看看官方文档中的内容,不过内容比较少。

3. 示例代码

var scale by remember { mutableStateOf(1f) }
var rotation by remember { mutableStateOf(0f) }
var offset by remember { mutableStateOf(Offset.Zero) }
val state = rememberTransformableState {
    zoomChange: Float, panChange: Offset, rotationChange: Float ->
    scale *= zoomChange
    rotation += rotationChange
    offset += panChange
}

//可以使用graphicsLayer修饰符传入各个参值,也可以单独使用scale,rotation等修饰符
Box(
    modifier = Modifier
        .graphicsLayer(
            scaleX = scale,
            scaleY = scale,
            rotationZ = rotation,
            translationX = offset.x,
            translationY = offset.y
        )
        //.rotate(rotation)
        //.scale(scale)
        .transformable(state = state)
        .background(color = Color.Red)
        .size(80.dp)
)

我们在上面的示例代码中演示了多点触控事件的用法,我们将该事件绑定到了一个红色的方框上,运行程序时可以使用多个手指对红色方框进行缩放,旋转和平移操作,下面是程序的运行效果图,请大家参考:

在这里插入图片描述

4. 内容总结

最后,我们对本章回的内容做一个全面的总结,以方便大家快速掌握本章回的知识。

  • 多点触控事件分三种:旋转,缩放和平移,它们分别对应rotate,scale和transformable修饰符;
  • 与多点触控事件相关修饰符需要配合状态值一起使用;
  • 多点触控事件的修饰符可以单独使用,也可以综合使用;

看官们,与Jetpack中多点触控相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国际阿里云CDN加速OSS资源教程!

当您需要加速OSS上的静态资源时,可以通过阿里云CDN加速OSS域名,实现静态资源的访问加速。本文详细介绍了通过CDN控制台实现OSS加速的操作流程和应用场景。 客户价值 阿里云OSS可提供低成本的存储,CDN可以实现静态资源加速分发。使用OSS作为C…

浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?

目录 背景 浮点数的不精确性 定点数的表示 浮点数的表示 小结 背景 在我们日常的程序开发中,不只会用到整数。更多情况下,我们用到的都是实数。比如,我们开发一个电商 App,商品的价格常常会是 9 块 9;再比如&…

LLM - 训练与推理过程中的 GPU 算力评估

目录 一.引言 二.FLOPs 和 TFLOPs ◆ FLOPs [Floating point Opearation Per Second] ◆ TFLOPs [Tera Floating point Opearation Per Second] 三.训练阶段的 GPU 消耗 ◆ 影响训练的因素 ◆ GPT-3 训练统计 ◆ 自定义训练 GPU 评估 四.推理阶段的 GPU 消耗 ◆ 影响…

Azure机器学习 - 在 Azure 机器学习中上传、访问和浏览数据

目录 一、环境准备二、设置内核三、下载使用的数据四、创建工作区的句柄五、将数据上传到云存储空间六、访问笔记本中的数据七、创建新版本的数据资产八、清理资源 机器学习项目的开始阶段通常涉及到探索性数据分析 (EDA)、数据预处理(清理、特征工程)以…

WebService接口方式是什么

业务应用系统指标采集采用WebService接口方式,这表明系统通过WebService这种网络服务的形式来收集和交换业务应用的运行指标和数据。 WebService是一种在网络上提供服务的方式,它允许不同的应用程序在网络上进行交互和通信,无论它们是用什么…

javaEE -14(10000字 JavaScript入门 - 1)

一:初始 JavaScript JavaScript (简称 JS)是世界上最流行的编程语言之一,它是一个脚本语言, 通过解释器运,主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行. JavaScript 和 HTML 和 CSS 之间的关系: HTML…

Spring IOC - ConfigurationClassPostProcessor源码解析

上文提到Spring在Bean扫描过程中,会手动将5个Processor类注册到beanDefinitionMap中,其中ConfigurationClassPostProcessor就是本文将要讲解的内容,该类会在refresh()方法中通过调用invokeBeanFactoryPosstProcessors(beanFactory)被调用。 5…

dsm 和 大五人格

问题记录 1. 九型人格好像有很多层, 各层会有对应? 笔迹分析. 2. 还要结合行为吧? 书: dsm5 失序的人格 动力取向精神 问题: 大五人格和dsm的渊源, 觉得dsm太粗略了,搞个大五海洋. 问题: 很内向, 然后喜欢摄影, 也喜欢看b站上其他专业博主上传的摄影vlog. 跟他交流的时候又…

图的广度优先遍历讲解附Java代码加详细注释

目录 引入 代码实现 复杂度分析 引入 类比树的广度优先遍历(层序遍历),通过一个队列不断地实现出队的同时把左右孩子入队的操作实现广度优先遍历,值得注意的是图是否有环的情况。 用相似的方法可以实现图的广度优先遍历&#…

Linux:Docker的介绍(1)

Docker官网 Docker: Accelerated Container Application Developmenthttps://www.docker.com/ docker是什么? 是一种轻量级的‘虚拟机’ 在Linux容器里运行应用的开源工具 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个…

跟着步骤,快速实现图书行业小程序商城

跟着步骤,快速实现图书行业小程序商城 打造独特图书购物体验,小程序商城制作指南 轻松搭建图书馆与书店的线上商城小程序 值得一试的图书教材小程序商城搭建方法 图书商城小程序制作指南,助你成为行业领袖 实战教程:如何制作…

LabVIEW对多个同一类型控件进行操作

LabVIEW对多个同一类型控件进行操作 有时候LabVIEW要多多个同一类的控件进行操作,如对tab中某个page中所有String控件设为dissable。就可以用如下的方式。className是获取不同类型的控件。通过类型选择,可以选择所有的String控件,并可对特定…

Hydra(九头蛇海德拉)教程

Hydra 参数 hydra <参数> <IP地址> <服务名> 参数案例说明-l-l root登录账号-L-L userName.txt用户文件-p-l 123456登录密码-P-P passwd.txt密码文件-e-e nsrn 空密码 s 用户名即密码 r 用户名和密码相反&#xff08;如root的密码为toor&#xff09;-s-s 21指…

python基于VGG19实现图像风格迁移

目录 1、原理 2、代码实现 1、原理 图像风格迁移是一种将一张图片的内容与另一张图片的风格进行合成的技术。 风格&#xff08;style&#xff09;是指图像中不同空间尺度的纹理、颜色和视觉图案&#xff0c;内容&#xff08;content&#xff09;是指图像的高级宏观结构。 实…

小程序制作(超详解!!!)第十一节 成绩计算器

设计一个计算学生平均成绩的小程序。当输入学生信息和各门功课成绩并提交后&#xff0c;能够显示学生的信息及平均成绩。 1.index.wxml <view classbox><view classtitle>成绩计算器</view><input placeholder"请输入你的名字" placeholder-c…

台积电熊本厂力拚明年如期量产 | 百能云芯

台积电&#xff08;TSMC&#xff09;正在积极推进其在日本熊本的新工厂项目&#xff0c;该项目正在如火如荼地建设中。根据了解&#xff0c;该工厂的员工总数将超过千人。台积电的目标是确保该新工厂按计划于2024年开始量产&#xff0c;这将使其成为首个因应客户需求和地缘政治…

食品行业小程序开发攻略

想要设计一个食品小程序商城&#xff0c;却担心自己没有任何设计经验&#xff1f;别担心&#xff0c;现在有了一些简单易用的小程序制作工具&#xff0c;零基础也能成为一个小程序商城设计师&#xff01;接下来&#xff0c;我们将一步步教你如何使用这些工具快速上手。 首先&am…

Easy Javadoc插件的使用教程

目录 一、安装Easy Javadoc插件 二、配置注释模板 三、配置翻译 一、安装Easy Javadoc插件 在idea的File-Settings-Plugins中搜索Easy Javadoc插件&#xff0c;点击install进行安装&#xff0c;安装完成后需要restart IDE&#xff0c;重启后插件生效。 二、配置注释模板 …

相关性网络图 |显著性标记

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 本期教程 写在前面 此图是一位同学看到后&#xff0c;想出的一期教程。 最近&#xff0c;自己的事情比较多&#xff0c;会无暇顾及社群和公众号教程。 1 安装和加载相关的R包 library(ggraph) library(tidy…

AI大模型在短视频处理和剪辑中的应用,文末送书

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…