3.20MayBeAndroid

news/2024/12/2 3:22:59/

 invalidate里放着ONDRAW的方法,当调用I时,会自动更新图片

如果上次记录的位置在-1,那么就更新为现在的位置,更新后就不再为-1了,就不再变了

也就是说是保留第一次触碰到的位置

public class CustomView extends View {private int mLastX, mLastY;private boolean isDragging = false;public CustomView(Context context) {super(context);}@Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();int currX = (int) event.getX();int currY = (int) event.getY();switch (action) {case MotionEvent.ACTION_DOWN:if (event.getPointerCount() == 1) {isDragging = true;}mLastX = currX;mLastY = currY;break;case MotionEvent.ACTION_MOVE:if (isDragging) {int dx = currX - mLastX;int dy = currY - mLastY;// 拖拽int left = getLeft() + dx;int top = getTop() + dy;int right = getRight() + dx;int bottom = getBottom() + dy;layout(left, top, right, bottom);} else {int dx = currX - mLastX;int dy = currY - mLastY;// 拉伸ViewGroup.LayoutParams layoutParams = getLayoutParams();layoutParams.width += dx;layoutParams.height += dy;setLayoutParams(layoutParams);}mLastX = currX;mLastY = currY;break;case MotionEvent.ACTION_UP:isDragging = false;break;}return true;}
}

public class CustomView extends View {private int mLastX, mLastY;private boolean isDragging = false;private boolean isScaling = false;private float initialDistance;public CustomView(Context context) {super(context);}@Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();int currX = (int) event.getX();int currY = (int) event.getY();switch (action & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN:if (event.getPointerCount() == 1) {isDragging = true;}mLastX = currX;mLastY = currY;break;case MotionEvent.ACTION_POINTER_DOWN:if (event.getPointerCount() == 2) {isDragging = false;isScaling = true;initialDistance = getDistance(event);}break;case MotionEvent.ACTION_MOVE:if (isDragging) {int dx = currX - mLastX;int dy = currY - mLastY;// 拖拽int left = getLeft() + dx;int top = getTop() + dy;int right = getRight() + dx;int bottom = getBottom() + dy;layout(left, top, right, bottom);} else if (isScaling) {float currentDistance = getDistance(event);float scale = currentDistance / initialDistance;// 拉伸ViewGroup.LayoutParams layoutParams = getLayoutParams();layoutParams.width *= scale;layoutParams.height *= scale;setLayoutParams(layoutParams);}break;case MotionEvent.ACTION_POINTER_UP:if (event.getPointerCount() == 2) {isScaling = false;}break;case MotionEvent.ACTION_UP:isDragging = false;isScaling = false;break;}return true;}private float getDistance(MotionEvent event) {float dx = event.getX(0) - event.getX(1);float dy = event.getY(0) - event.getY(1);return (float) Math.sqrt(dx * dx + dy * dy);}
}


http://www.ppmy.cn/news/1551649.html

相关文章

CH32v20x单片机risc-v内核uint64_t类型移位后变量为0解决办法

CH32v20x单片机编写程序时遇到uint64_t 变量移位后为0。 uint64_t temp1 0;uint64_t temp2 0;temp1 (pData[0]<<24)|(pData[1]<<16)|(pData[2]<<8)|pData[3];myResControlBoard.rcSetRes temp1<<32;temp2 (pData[4]<<24)|(pData[5]<…

DAY141权限提升-Linux系统权限提升篇VulnhubCapability能力LD_Preload加载数据库等

一、演示案例-Linux系统提权-Web&用户-数据库类型 复现环境&#xff1a;Raven: 2 ~ VulnHub 1、信息收集 http://192.168.139.155/vendor/ 2、Web权限获取 searchsploit phpmailer find / -name 40969.py cp /usr/share/exploitdb/exploits/php/webapps/40969.py p.py p…

Docker 实战:搭建本地 Registry 私有镜像仓库及批量导入脚本

前言&#xff1a;在我之前的博客中&#xff0c;我分享了 Harbor 仓库搭建的详细操作步骤。然而&#xff0c;在实际的生产环境中&#xff0c;并非每个 Docker 环境都需要部署一个规模庞大的 Harbor 仓库。有时&#xff0c;一个轻量级的本地 Registry 私有镜像仓库会更为便捷。本…

【聊天室后端服务器开发】语音转换子服务

概述 实现逻辑 服务器搭建流程分析 基于gflags模块进行参数解析 RPC信息&#xff1a;当前服务器的地址端口&#xff0c;主要用于搭建RPC服务器的监听地址信息服务注册信息 注册中心的地址端口&#xff1a;向服务器中心进行服务注册外部访问地址端口&#xff1a;告知注册中心的…

新版本PasteSpider开发中专用部署工具介绍(让2GB的服务器也能使用CI/CD,简化你的部署过程)

如果你有linux服务器&#xff0c;可以试试这个PasteSpider&#xff0c;利用容器管理软件(docker/podman)&#xff0c;可以快速上手&#xff01; 拉取镜像并安装 【【【PasteSpider的下载和安装(支持docker的一键模式)】】】 建议使用 最简单的模式SqliteMemoryCache 测试嘛…

LINQ (C#) 中的限定符运算:全部All、任意Any、包含Contains

限定符运算返回一个 Boolean 值&#xff0c;该值指示序列中是否有一些元素满足条件或是否所有元素都满足条件。 下图描述了两个不同源序列上的两个不同限定符运算。 第一个运算询问是否有任何元素为字符“A”。 第二个运算询问是否所有元素都为字符“A”。 这两种方法在此示例…

Matlab搜索路径添加不上

发现无论是右键文件夹添加到路径&#xff0c;还是在“设置路径”中专门添加&#xff0c;我的路径始终添加不上&#xff0c;导致代码运行始终报错&#xff0c;后来将路径中的“”加号去掉后&#xff0c;就添加成功了&#xff0c;经过测试&#xff0c;路径中含有中文也可以添加成…

【论文阅读】点云预测-机器人操作

文章目录 1. 【CoRL 2024】IMAGINATION POLICY: Using Generative Point Cloud Models for Learning Manipulation Policies针对痛点和贡献摘要和结论引言方法实验思考不足之处 2. 【CVPR2023】Point Cloud Forecasting as a Proxy for 4D Occupancy Forecasting针对痛点和贡献…