当前位置: 首页 > java >正文

Android 实现可拖动的ImageView

Android 实现可拖动的ImageView


代码实现:

public class DraggableImageView extends AppCompatImageView {private float lastTouchX;private float lastTouchY;public DraggableImageView(Context context) {super(context);init();}public DraggableImageView(Context context, AttributeSet attrs) {super(context, attrs);init();}public DraggableImageView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {setClickable(true);}@Overridepublic boolean onTouchEvent(MotionEvent event) {final int action = event.getActionMasked();switch (action) {case MotionEvent.ACTION_DOWN:lastTouchX = event.getRawX();lastTouchY = event.getRawY();break;case MotionEvent.ACTION_MOVE:float x = event.getRawX();float y = event.getRawY();x = Math.max(0,x);y = Math.max(0,y);float dx = x - lastTouchX;float dy = y - lastTouchY;//边界控制ViewGroup pa = (ViewGroup) getParent();float lx = Math.max(0,dx+getX());float ly = Math.max(0,dy+getY());lx = Math.min(lx,pa.getWidth()-getWidth());ly = Math.min(ly,pa.getHeight()-getHeight());setX(lx);setY(ly);lastTouchX = x;lastTouchY = y;break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:break;case MotionEvent.ACTION_POINTER_UP:lastTouchX = event.getRawX();lastTouchY = event.getRawX();break;}return true;}
}
http://www.xdnf.cn/news/13427.html

相关文章:

  • RTX4060安装cuda12.3 cudnn8.9
  • Neo4j批量数据导入完全指南:高效处理大规模数据
  • MyBatis-Plus 混合使用 XML 和注解
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | FAQ Collapse(问题解答折叠面板)
  • Oracle ADG 日常巡检指南
  • 由编译osgEarth源码引发的一系列问题(三)利用vcpkg安装osg与OSGEarth
  • JavaScript跨域全面指南:从原理到最佳实践
  • RV1126+OPENCV在视频中添加LOGO图像
  • JVM面试基础篇
  • `dispatch_source_t` 计时器 vs `NSTimer`:核心差异一览
  • 【实习总结】C++ 通过pugi::xml库对xml文件进行操作
  • 如何正确的配置eureka server集群
  • 【QT】窗口详解
  • Linux进程管理:创建,终止,等待
  • 智能机器人从零构建陪跑计划
  • PyTorch:让深度学习像搭积木一样简单有趣!
  • Vue实现图像对比组件:打造交互式图片比较工具
  • 深度学习:PyTorch简介
  • 【python】基于pycharm的海康相机SDK二次开发
  • 计算机网络:认证和授权 DNS 域名解析过程(如何转换为ip地址) http无状态 5**服务端错误相关的响应状态码 tcp某次握手丢失会有什么现象?
  • 浅谈Linux中一次系统调用的执行过程
  • 网络中基础的三张表(mac、arp、route)
  • 开源、免费、美观的 Vue 后台管理系统模板
  • 《Ansys SIPI仿真技术笔记》 E-desk IBIS模型导入
  • 架空线路智能监控系统的应用与优势剖析
  • ESP32 004 Thonny 配置简单的轻量级MicroPython开发IDE
  • 深入解析MySQL Join算法原理与性能优化实战指南
  • Flutter 核心概念:深入理解 StatelessWidget 与 StatefulWidget
  • 数据集-目标检测系列- 狮子 数据集 lion >> DataBall
  • matlab下载(matlab R2024b)安装教程(2025最新版安装方式)