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

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;}
}

相关文章:

  • linux内核编译问题记录
  • Ubuntu+k3s+karmada离线安装部署说明
  • java--认识反射
  • Wireshark 筛选功能详解:语法与示例
  • OpenAI推出o3-Pro模型
  • 开源项目实战学习之YOLO11:12.9 ultralytics-models-sam-amg.py
  • 【kafka】消息模型与工作原理详解
  • 车载软件和整车电子架构正重新定义汽车行业
  • 查看 Ubuntu 系统信息
  • MATLAB-磁偶极子的空间磁场强度仿真
  • 适合有C基础后快速上手C++
  • RAG技术全解析:从概念到实践,构建高效语义检索系统——嵌入模型与向量数据库搭建指南
  • 智能空气流向控制系统SKLX的优化与实践
  • 一款自制的OpenMV4模块
  • LRU 结构 LinkedHashMap:HashMap+双向链表的完美结合
  • 用python玩转大语言模型——从 RNN 到文本生成大语言模型的奇幻之旅
  • MMDG++:构筑多模态人脸防伪新防线,攻克伪造攻击与场景漂移挑战
  • 日期的数据格式转换
  • 爬取新浪新闻网的全部策略
  • Go 语言 JWT 深度集成指南
  • 郑州的做网站公司哪家好/云seo关键词排名优化软件
  • 什么样算网站需要备案/seo关键词排行优化教程
  • 南通网站开发公司/短视频seo关键词
  • 中国建设银行产品信息网站/刷外链
  • 做一个网站后期维护需要多少钱/爱站网seo工具
  • 一个网站专门做摩托车/培训心得体会万能模板