【Android】点击图片获取点击位置在图片中的位置

需求

在一个页面中,有一张图片展示,这个页面是一个可滑动页面,但是当点击到这个图片里面的位置的时候,我们需要获取到这个点击位置在图片的哪个位置,即获取到点击点与图片当前的相对位置。

分析

我们在屏幕上可以通过 MotionEvent 获取到点击屏幕时的当前的X和Y的位置,但是这个位置是整个屏幕的位置,是以屏幕左上角为原点坐标的相对位置,但我们需要的是点击位置相对于图片的相对位置,因为页面可以滑动,所以当页面滑动之后,我们再点击相对于图片上的位置跟原来相同的点,但是根据屏幕获取到X和Y的位置也会变,所以我们需要获取的X和Y应该是相对于图片的左上角的原点的相对位置。

举个例子

当图片在页面的下部显示的时候,我们点击图片的中心位置,此时通过MotionEvent 获取的坐标是(X1,Y1),但是当图片滑动到页面的上部的时候,还是点击图片的中心位置,此时通过 MotionEvent 获得的坐标是(X2,Y2),两次我们点击的都是图片的中心位置,但是这个(X1,Y1)绝对不等于(X2,Y2),那需要怎么解决这个问题呢?需要我们更改这个坐标原点,因为我们这两次获取的值的坐标原点都是相对屏幕来说的,我们需要把这个坐标原点修改为相对于这张图片。

解决方案
imageView.post {val location = IntArray(2)imageView.getLocationOnScreen(location)//图片左上角此时在屏幕中的X位置val screenX = location[0]//图片左上角此时在屏幕中的Y位置val screenY = location[1]//接下来只要使用 MotionEvent 减去这个值就好了newX = event.x - location[0]newY = event.y - location[1]//这个时候获取到的newX和newY的值就是此时点击图片的相对于图片左上角的//位置的值,如果我们两次点击图片的同一位置,即使图片在页面中显示的位置//不在同一个位置(滑动了),但是这两次获得到的值是相同的
}

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

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

相关文章

linux磁盘满了,如何查找大文件清除?

将整个Linux中文件按照文件大小排序,从大到小排序 只显示前100条数据 命令: find / -type f -exec du -h {} | sort -rh | head -n 100结果:

全栈工程师需要具备哪些技能?

概论: 全栈工程师是一位能够从头到尾构建 Web 应用程序的工程师,能独立完成产品。技术包括前端部分、后端部分和应用程序所在的基础架构。他们在整个技术栈中工作,并了解其中的每个部分。从需求分析开始,到概要设计,详…

HarmonyOS鸿蒙学习笔记(25)相对布局 RelativeContainer详细说明

RelativeContainer 简介 前言核心概念官方实例官方实例改造蓝色方块改造center 属性说明参考资料 前言 RelativeContainer是鸿蒙的相对布局组件,它的布局很灵活,可以很方便的控制各个子UI 组件的相对位置,其布局理念有点类似于android的约束…

270 基于matlab的模糊自适应PID控制

基于matlab的模糊自适应PID控制,具有10页报告。传统PID在对象变化时,控制器的参数难以自动调整。将模糊控制与PID控制结合,利用模糊推理方法实现对PID参数的在线自整定。使控制器具有较好的自适应性。使用MATLAB对系统进行仿真,结…

如何配置云WAF以实现更有效的流量分发

云WAF流量分发功能介绍 云WAF(Web Application Firewall)是一种基于云计算环境的Web应用安全防护服务,主要用于保护Web应用程序免受各种网络攻击,如SQL注入、跨站脚本(XSS)、分布式拒绝服务(DD…

前后端交互:axios 和 json;springboot 和 vue

vue 准备的 <template><div><button click"sendData">发送数据</button><button click"getData">接收</button><button click"refresh">刷新</button><br><ul v-if"questions&…

win10系统下WPS工具显示灰色全部用不了,提示登录

如果你在写文档或使用excel时发现导航栏的工具全部使用不了&#xff0c;弹出是需要您登录&#xff0c;可以通过以下操作不用登录。 按照 1&#xff08;搜索框&#xff09;—> 2&#xff08;应用&#xff09;—> 3&#xff08;WPS Office&#xff09;点鼠标左键—> 4&a…

大规模 Transformer 模型 8 比特矩阵乘

本文基于 Hugging Face Transformers、Accelerate 以及 bitsandbytes库。 Transformers&#xff1a;Hugging Face 提供的一个开源库&#xff0c;包含了多种预训练的 Transformer 模型&#xff0c;方便用户进行各种 NLP 任务。Accelerate&#xff1a;Hugging Face 开发的一个库…

物联网行业知识概览(一)

Mesh 小米科普&#xff1a;一文看懂路由器上的Mesh组网是什么 - IT之家 (ithome.com) 言简意赅就是&#xff1a; 分散在各个角落的多台路由器的信号合并成一个。只用连一个wifi&#xff0c;自动切换到信号最好的那台。 30秒简单理解Mesh组网_哔哩哔哩_bilibili TWS TWS是True W…

如何解决Ubuntu中软件包安装时的404错误(无法安装gdb、cgddb等)

目录 问题描述 解决方法 1. 更新软件包列表 2. 使用--fix-missing选项 3. 更换软件源 4. 清理和修复包管理器 总结 在使用Ubuntu进行软件包安装时&#xff0c;有时可能会遇到404错误。这种错误通常是由于软件源中的某些包已经被移除或迁移到其他位置。本文将介绍几种解决…

Spark SQL内置函数

Apache Spark SQL 提供了一组丰富的内置函数&#xff08;或称为UDFs&#xff0c;用户定义函数&#xff09;&#xff0c;用于在查询时处理数据。这些函数涵盖了字符串操作、日期/时间处理、数学运算、聚合等多个方面。以下是一些 Spark SQL 中常见的内置函数类别及其示例&#x…

04.k8s的附加组件

4.k8s的附加组件 4.1 dns服务 安装dns服务 1:下载dns_docker镜像包 wget http://192.168.12.201/docker_image/docker_k8s_dns.tar.gz2:导入dns_docker镜像包(所有节点或者node2节点) 3:修改skydns-rc.yaml&#xff0c;指定13的机器&#xff0c;该功能可加可不加 spec:node…

Arduino RP2040 CDC虚拟串口通讯--普通串口不显示

这两天在用RP2040运行些程序&#xff0c;但发现一个问题&#xff0c;使用arduino IDE可以通过串口显示数据&#xff0c;但是其他串口工具不会显示数据&#xff0c;可以打开串口&#xff0c;排查一下午无果&#xff0c;相当头疼&#xff0c; 晚上搜索时发现这个介绍&#xff1a…

详细分析async/await的基本知识以及用法(附Demo)

目录 前言1. 基本知识2. Demo2.1 单异步2.2 多异步2.3 配合钩子2.4 差异 3. 实战 前言 原先在小程序的时候用过这个用法&#xff0c;知识点差不过&#xff0c;推荐阅读&#xff1a;详细分析Js中的Promise.all基本知识&#xff08;附Demo&#xff09; 以下文章针对Vue3知识&am…

【康耐视国产案例】智能AI相机机器视觉精准快速实现包裹标签的智能粘贴

康耐视推出的3D-A1000是专业的、匹配物流行业各类分拣机及包裹检测应用的全功能视觉检测系统&#xff0c;其能够准确检测分拣机上是否有包裹、包裹是否超出边界、空车检测、是否有遗留物品等。由于搭载了专利的三维结构光技术&#xff0c;产品具有更强大的创新性以满足持续更新…

matlab图像处理入门

matlab在学校科研&#xff0c;仿真及基于模型开发的工作中有重要作用&#xff0c;在图像处理方面由于省去了复杂的上位机开发流程&#xff0c;因此可以让用户快速开发验证算法&#xff0c;下面简要介绍其在图像处理方面的应用。 matlab开发图像处理算法的流程主要是&#xff0c…

ARM虚拟机安装OMV

OMV(OpenMediaVault)是基于 Debian GNU/Linux 的网络连接存储&#xff08;network attached storage&#xff0c;NAS&#xff09;解决方案。它包含 SSH、(S) FTP、SMB/CIFS、DAAP 媒体服务器、rsync、 BitTorrent 等很多种服务。它可用于 x86-64 和 ARM 平台。 在x86-64平台上&…

企业级网络安全问题及其解决手段

随着企业信息化程度的不断提高&#xff0c;网络安全问题已成为企业面临的重大挑战。本文将探讨企业级网络安全问题的现状、原因以及相应的解决手段。 一、企业级网络安全问题的现状 近年来&#xff0c;企业级网络安全事件频发&#xff0c;给企业带来了巨大的经济损失和声誉损…

「浏览器」服务端渲染

前言 服务端渲染&#xff08;Server-Side Rendering&#xff0c;SSR&#xff09;是一种常见于网页应用的技术&#xff0c;它指的是在服务器上将网页的内容生成&#xff0c;然后发送完整的HTML页面到客户端的浏览器的过程。这与传统的客户端渲染&#xff08;Client-Side Render…

docker错误

启动docker容器报错&#xff1a;library initialization failed - unable to allocate file descriptor table - out of memory 修改/etc/systemd/system/docker.service文件中的LimitNOFILE、LimitNPROC和LimitCORE配置为65535固定值&#xff0c;原先配置中这三个参数都设置为…