【Android 需求方案实现】 在屏幕上画一条线的时候,如何把这条线经过的所有坐标点(高效有序完整)地发送出去?

文章目录

  • 需求背景
  • 定义接口,获取down和move事件获取到的坐标信息
  • 获取触摸事件MotionEvent
  • 对拿到的x、y坐标进行处理
  • 发送实时坐标点
  • 算法实现:把虚线通过补偿算法填充为实线
  • 完成

需求背景

买东西付款的时候,或者银行一些业务办理的时候,我们常常需要签名。目前大多数场景都是电子签名。
我们需要拿到当前用户签名的轨迹,然后把签名的轨迹实时的发送到另外一台机器上。从而让工作人员实时看到对方签名的实况。
那么这个业务怎么实现呢?

过来看看实现它的完整思路!

定义接口,获取down和move事件获取到的坐标信息

/*** 监听签名坐标*/
public interface ICoordinatesListener {/** * click down的坐标*/void getDownCoordinates(int x, int y);/*** touch move的坐标*/void getCoordinates(int x,int y);
}

获取触摸事件MotionEvent

获取触摸事件,这是很自然的做法,把触摸事件的拿到的坐标点传递进到我们定义的接口中来。
对应的系统方法是,下面是伪代码,可以根据你项目实际需求进行更精细的控制:

@Overridepublic boolean onTouchEvent(MotionEvent event) {if(down){getDownCoordinates(int x, int y)}if(move){getCoordinates(int x,int y);}}

需要注意的是,由于不同屏幕有不同的像素密度和尺寸,实际上获取到的x,y轴的坐标点可能会和你画板绘制时候拿到的view的宽高对不上,需要进行一定的转换。

对拿到的x、y坐标进行处理

我们实现接口的匿名内部类,作为监听器传递到画板View中去。当onTouchEvent来数据的时候,我们并可以拿到坐标信息。

可以脑海里想象一下,当我们画一条线,是不是一定有先点击,就是down的动作,然后我们手指移动,就是move的动作。

我们在代码中,先记录down的坐标点,

  /*** 获取当前点击down的坐标*/public void setTouchDownCoordinate(int touchDownX, 

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

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

相关文章

IntelliJ IDEA 2023:创新不止步,开发更自由 mac/win版

IntelliJ IDEA 2023激活版是一款强大而智能的集成开发环境(IDE),为开发者提供了一系列先进的功能和工具,帮助他们更高效地编写、调试和测试代码。 IntelliJ IDEA 2023 软件获取 IntelliJ IDEA 2023继承了其前代版本的优秀基因,并在此基础上进…

用 Python 自动化处理无聊的事情

“编程最棒的部分就是看到机器做一些有用的事情而获得的胜利。用 Python 将无聊的事情自动化将所有编程视为这些小小的胜利;它让无聊变得有趣。” Hilary Mason,数据科学家兼 Fast Forward Labs 创始人 “我很享受打破东西然后把它们重新组合起来的乐趣…

【JavaEE】_前端POST请求使用json向后端传参

目录 1. 关于json 2. 通过Maven仓库,将Jackson下载导入到项目中 3. 使用Jackson 3.1 关于readValue方法 3.2 关于Request.class类对象 3.3 关于request对象的属性类型 3.4 关于writeValueAsString 前端向后端传递参数通常有三种方法: 第一种&…

Redis之二:Redis 常用命令

Redis 命名不区分大小写 0.登录远程服务器 如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。 语法 $ redis-cli -h host -p port -a password 获取配置信息: CONFIG GET CONFIG_SETTING_NAME 例: CONFIG GE…

BTC网络 vs ETH网络

设计理念 BTC 网络 比特币是一种数字货币,旨在作为一种去中心化的、不受政府或金融机构控制的电子货币。其主要目标是实现安全的价值传输和储存,比特币的设计强调去中心化和抗审查。 ETH 网络 以太坊是一个智能合约平台,旨在支持分散的应…

Windows系统x86机器安装(麒麟、统信)ARM系统详细教程

本次介绍在window系统x86机器上安装国产系统 arm 系统的详细教程。 注:ubuntu 的arm系统安装是一样的流程。 1.安装环境准备。 首先,你得有台电脑,配置别太差,至少4核8G内存,安装window10或者11都行(为啥…

抖音视频评论批量下载软件|抖音数据抓取工具

随着业务需求的增长,抖音视频的下载需求也日益增加。传统的方式是通过逐个复制粘贴分享链接来下载视频,这种操作效率低下且耗时费力。为了解决这一问题,我们开发了一款基于C#的抖音视频评论批量下载软件,旨在实现通过关键词自动批…

Web服务器群集:OpenEuler 部署 LAMP(LNMP) 基础服务

目录 一、实验 1.环境 2. 网络配置 3. MobaXterm远程连接 4. apache 2.4.58 源码编译安装 5. php 8.3.1源码编译安装 6.配置httpd 连接 php-fpm 6. nginx 1.24.0源码编译安装 7. mysql 8.0.36安装 二、问题 1.MobaXterm设置右键复制粘贴 2.OpenEuler如何查看CPU的核…

Android 使用NanoHTTPD 架设 Http Server + 客户端App 发送请求示例(含上传图片示例)

NanoHTTPD 简介 使用该 lib,可以在 Android 设备上,架设 Http Server。客户端(Client) App,请求 http://[serverIp]:[server端口]/… 访问服务。适用于,局域网内多安卓设备(一台作为服务器,其它作为客户端)间通信。 https://github.com/NanoHttpd/nanohttpd 依赖:imple…

Linux内核模块签名与版本检查机制

内核模块签名机制 linux内核从3.7 开始加入模块签名检查机制, 校验签名是否与已编译的内核公钥匹配。目前只支持RSA X.509验证, 模块签名验证并非强制使用, 可在编译内核时配置是否开启。 CONFIG_MODULE_SIG: Module signature verification 开启该选项后,内核加载该模块…

npm install报错,常见的解决方案

当在使用 npm install 命令时遇到错误时,可以尝试以下一些常见的解决方案: 清除 npm 缓存: 运行以下命令清除 npm 缓存: npm cache clean --force更新 npm: 确保你正在使用最新版本的 npm。可以运行以下命令更新 npm&a…

使用Node.js开发一个文件上传功能

在现代 Web 应用程序开发中,文件上传是一个非常常见且重要的功能。今天我们将通过 Node.js 来开发一个简单而强大的文件上传功能。使用 Node.js 来处理文件上传可以带来许多好处,包括简单的代码实现、高效的性能和灵活的配置选项。 首先,我们…

【kubernetes】关于k8s集群的资源发布方式(灰度/滚动发布)

目录 一、常见的发布方式 二、详解kubectl陈述式方式做灰度发布(金丝雀发布) 步骤一:先基于deployment控制器创建pod,然后发布 步骤二:基于命令行灰度发布 步骤三:测试等到版本稳定以后,再完…

2月21日,每日信息差

🎖 素材来源官方媒体/网络新闻 🎄 10 家央企签订倡议书:将主动向社会开放人工智能应用场景 🌍 上海成为首个固定资产投资破万亿的一线城市 🌋 特斯拉扩建德国工厂的计划遭当地居民反对 🎁 加拿大公司利用木…

72_Pandas.DataFrame保存并读取带pickle的系列(to_pickle、read_pickle)

72_Pandas.DataFrame保存并读取带pickle的系列(to_pickle、read_pickle) 要将 pandas.DataFrame、pandas.Series 对象保存为 pickle 文件,请使用 to_pickle() 方法,并使用 pd.read_pickle() 函数读取保存的 pickle 文件。 在此对…

远程解难:苹果手机投屏到Windows电脑,给爸妈演示手机操作

明窗净几夜未央, 键盘轻敲解忧忙。 父母笑颜消难题, 孝心科技共光芒。 QQ、微信、小红书等社交软件不仅年轻人在用,老年人也逐步使用社交软件建立起自己的朋友圈。但这些“新”软件对于部分老年人来说还是太复杂,这就难免需要年…

Mysql常见用法(2)

目录​​​​​​​ mysql 约束 primary key 主键的基本使用 notnull(非空) unique(唯一) foreign key(外键) check 自增长 mysql索引 索引的原理 索引的类型 索引的使用 --添加索引 删除索引: -- 修改索引 , 先删除,在添加新…

vue前端密码加密,springboot后端密码解密

1.模块安装 1 npm install crypto-js 2.src–>util–>secret.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 import CryptoJS from crypto-js // 默认的 KEY …

liunx单机项目部署

文章目录 1.liunx简介2.liunx的jdk安装2.liunx的tomcat安装3.liunx的mysql安装4.单机项目部署 1.liunx简介 Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费…

【C语言】学生宿舍信息管理系统

目录 项目说明 1. 数据结构设计 2. 功能实现 3. 主菜单设计 4. 文件操作 5. 系统使用 项目展示 1.主菜单功能界面 ​编辑 2.添加信息 3.查询信息 4.修改信息 5.删除信息 6.退出程序 项目完整代码 结语 在这篇博客中,我们将探讨如何使用C语言来开发…