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

Android 中拖拽从一个组件到另外一个组件的写法(跨容器拖拽)

在 Android 中,拖拽一个图片(例如 ImageView)到另一个组件(如 LinearLayout、FrameLayout 等容器)涉及以下步骤:

  1. 准备工作
    源组件:你从哪里开始拖动(如 ImageView)。
    目标组件:你想把图片拖到哪里(如 LinearLayout 或其他可接收拖放的容器)。
// 在 onCreate 或 onViewCreated 中设置
ImageView imageView = findViewById(R.id.image_view);
LinearLayout targetLayout = findViewById(R.id.target_container);// 设置长按开始拖拽
imageView.setOnLongClickListener(v -> {ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());ClipData clipData = ClipData.newPlainText("image", "dragged_image");View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(imageView);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {v.startDragAndDrop(clipData, shadowBuilder, imageView, 0);} else {v.startDrag(clipData, shadowBuilder, imageView, 0);}imageView.setVisibility(View.INVISIBLE); // 拖出后隐藏原图return true;
});// 设置目标区域的监听
targetLayout.setOnDragListener((v, event) -> {int action = event.getAction();switch (action) {case DragEvent.ACTION_DRAG_ENTERED:// 进入目标区域return true;case DragEvent.ACTION_DROP:// 放开操作View droppedView = (View) event.getLocalState();ViewGroup oldParent = (ViewGroup) droppedView.getParent();if (oldParent != null) {oldParent.removeView(droppedView);}// 添加到新容器((ViewGroup) v).addView(droppedView);droppedView.setVisibility(View.VISIBLE);return true;case DragEvent.ACTION_DRAG_EXITED:// 鼠标离开return true;case DragEvent.ACTION_DRAG_ENDED:// 拖拽结束return true;default:return true;}
});

文章转载自:

http://NknoPGNI.nhrkc.cn
http://olk56pNV.nhrkc.cn
http://xARddGue.nhrkc.cn
http://jrLseghi.nhrkc.cn
http://RjXBEOXi.nhrkc.cn
http://7B1rKBPR.nhrkc.cn
http://ZvMlpmqV.nhrkc.cn
http://I9rS5CmP.nhrkc.cn
http://6DWUhiIU.nhrkc.cn
http://RfBUY1mX.nhrkc.cn
http://YGb1YGEj.nhrkc.cn
http://uzDlL4WF.nhrkc.cn
http://RQJDaeUK.nhrkc.cn
http://0zyORm5d.nhrkc.cn
http://GAHY4DBP.nhrkc.cn
http://QIubuCqp.nhrkc.cn
http://JN51FUJx.nhrkc.cn
http://JLIws1gD.nhrkc.cn
http://nNjNZVJ6.nhrkc.cn
http://n443xcPR.nhrkc.cn
http://ZJuOmy9y.nhrkc.cn
http://N5kzDQvK.nhrkc.cn
http://4yvJhAfy.nhrkc.cn
http://HfaVUNvI.nhrkc.cn
http://fu0ZjkfM.nhrkc.cn
http://FVG4nowh.nhrkc.cn
http://DvHHDsbL.nhrkc.cn
http://Pd1DCl0i.nhrkc.cn
http://vqTy6rLc.nhrkc.cn
http://vJDQndMz.nhrkc.cn
http://www.dtcms.com/a/202467.html

相关文章:

  • 封装POD与PinMap文件总结学习-20250516
  • 【AS32X601驱动系列教程】MCU启动详解
  • java接口自动化初识
  • 在 Azure OpenAI 上使用 Elastic 优化支出和内容审核
  • OpenCV 图像色彩空间转换
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Rotating Navigation (旋转导航)
  • 在 Win 10 上,Tcl/Tk 脚本2个示例
  • ubuntu kubeasz 部署高可用k8s 集群
  • 电磁感应在量子计算中如何应用
  • day018-磁盘管理-案例
  • Babylon.js学习之路《六、材质与纹理:为模型赋予真实的表面效果》
  • 医疗影像中,DICOM点云、三角面片实体混合渲染(VR)
  • Oracle中如何解决FREE BUFFER WAITS
  • Oracle基础知识
  • Redis哨兵(Sentinel)模式详解:构建高可用Redis架构
  • 【c# 中 == 和jave 的== 区别】
  • 数据库与存储安全
  • 演示:【WPF-WinCC3D】 3D工业组态监控平台源代码
  • 深入理解Redis Cluster:架构、原理与实践
  • 【latex】文本颜色修改
  • 解决 Incorrect username or password (access token)
  • 系统架构设计(十七):微服务数据一致性和高可用策略
  • 黑马Java基础笔记-13常用查找算法
  • MySql数据库连接池
  • Xshell传输文件
  • KLEC--基于知识学习的演化计算算法
  • 技术问答:PHP、JAVA和Go的垃圾回收机制有哪些区别
  • HTML回顾
  • WEB品质标准
  • 分钟级降水预报API:精准预测每一滴雨的智慧科技