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://www.pswp.cn/diannao/83931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83931.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

火絨互聯網安全軟件:自主引擎,精準防御

在數字時代,網絡安全是每一個用戶都必須重視的問題。無論是個人用戶還是企業用戶,都需要一款高效、可靠的反病毒軟件來保護設備免受惡意軟件的侵害。今天,我們要介紹的 火絨互聯網安全軟件,就是這樣一款由資深工程師主導研發并擁有…

使用亮數據代理IP+Python爬蟲批量爬取招聘信息訓練面試類AI智能體(手把手教學版)

文章目錄 一、為什么要用代理IP?(重要!!!)二、環境準備(三件套走起)2.1 安裝必備庫(pip大法好)2.2 獲取亮數據代理(官網注冊送試用) 三、編寫爬蟲代碼&#x…

Android屏幕采集編碼打包推送RTMP技術詳解:從開發到優化與應用

在現代移動應用中,屏幕采集已成為一個廣泛使用的功能,尤其是在實時直播、視頻會議、遠程教育、游戲錄制等場景中,屏幕采集技術的需求不斷增長。Android 平臺為開發者提供了 MediaProjection API,這使得屏幕錄制和采集變得更加簡單…

互聯網大廠Java求職面試:Spring AI與大模型交互的高級模式與自定義開發

互聯網大廠Java求職面試:Spring AI與大模型交互的高級模式與自定義開發 在當今技術領域,隨著AI和大模型技術的廣泛應用,如何在復雜的系統架構中高效地集成這些技術成為了各大互聯網公司關注的重點。本文將通過一場模擬的面試對話&#xff0c…

MySQL 8.0 OCP 1Z0-908 161-170題

Q161.Examine this command, which executes successfully: cluster.addInstance ( ‘:’,{recoveryMethod: ‘clone’ 1}) Which three statements are true? (Choose three.) A)The account used to perform this recovery needs the BACKUP_ ADMIN privilege. B)A target i…

藍橋杯1447 砝碼稱重

問題描述 你有一架天平和 N 個砝碼,這 N 個砝碼重量依次是 W1,W2,???,WN?。 請你計算一共可以稱出多少種不同的重量? 注意砝碼可以放在天平兩邊。 輸入格式 輸入的第一行包含一個整數 N。 第二行包含 N 個整數:W1,W2,W3,???,WN?…

金融量化智能體,如何開發一個有效的策略?

原創內容第887篇,專注智能量化投資、個人成長與財富自由。 本周重構了網站,升級了最新的回測引擎,以及升級了論壇。 策略年化210%,夏普比3.47,系統源代碼及策略均可下載 年化37.5%,回撤控制在16.8%&…

JavaScript 性能優化:調優策略與工具使用

引言 在當今的 Web 開發領域,性能優化已不再是錦上添花,而是產品成功的關鍵因素。據 Google 研究表明,頁面加載時間每增加 3 秒,跳出率將提高 32%。而移動端用戶如果頁面加載超過 3 秒,有 53% 的用戶會放棄訪問。性能…

為 Jenkins添加 Windows Slave遠程執行 python項目腳本

測試環境 JAVA JDK 1.7.0_13 (jdk-7u13-windows-i586.exe) Jenkins Win11 64 python項目環境 實踐操作 1、新建與配置結點 【系統管理】-> 【管理結點】-> 【新建結點】, 如上,輸入結點名稱,勾選 【Dumb Slave】,點擊【OK】 說明&am…

基于springboot3 VUE3 火車訂票系統前后端分離項目適合新手學習的項目包含 智能客服 換乘算法

? 博主介紹:專注于Java(springboot ssm 等開發框架) vue .net php phython node.js uniapp 微信小程序 等諸多技術領域和畢業項目實戰、企業信息化系統建設,從業十五余年開發設計教學工作 ☆☆☆ 精彩專欄推薦訂閱☆☆☆☆☆…

btc交易所關鍵需求區 XBIT反彈與上漲潛力分析??

在加密貨幣市場的浪潮中,狗狗幣(DOGE)近期的走勢吸引了眾多投資者的目光。根據XBIT分析,狗狗幣剛剛踏入關鍵需求區,此前雖從高點大幅下跌了10%,但XBIT去中心化交易所平臺分析師認為,短期內它有望…

寶塔+fastadmin:給項目添加定時任務

一、定時任務腳本編寫 1. 使用 shebang 聲明執行器 #!/usr/bin/env php 這是 Unix/Linux 系統中腳本文件的標準開頭。表示這個腳本使用系統環境變量中的 php 來執行。2. 定義 ThinkPHP 入口路徑并加載框架 define(APP_PATH, __DIR__ . /../../application/); require __DIR__…

每日Prompt:自拍生成搖頭娃娃

提示詞 將這張照片變成一個搖頭娃娃:頭部稍微放大,保持面部準確,身體卡通化。[把它放在書架上]。

【Tools】neovim操作指南

Neovim 中最常見、最實用的操作, 主要針對C 開發需求&#xff1a; &#x1f680; 基礎操作 操作快捷鍵說明保存:w 或 ZZ保存當前文件退出:q 或 ZQ退出當前窗口保存并退出:wq 或 ZZ保存并退出強制退出:q!不保存直接退出撤銷u撤銷上一步重做<C-r>重做撤銷搜索/xxx向下搜索…

Visual Studio 制作msi文件環境搭建

一、插件安裝 a. 插件尋找 在 Visual Studio 2017 中&#xff0c;如果你希望安裝用于創建 MSI 安裝包的插件&#xff0c;第一步是&#xff1a;打開 Visual Studio 后&#xff0c;點擊頂部菜單欄中的 “工具”&#xff08;Tools&#xff09;&#xff0c;然后選擇下拉菜單中的 “…

深入解析 OpenManus:開源 AI 智能體框架的技術原理與實踐

深入解析 OpenManus&#xff1a;開源 AI 智能體框架的技術原理與本地部署指南 在當今人工智能快速發展的時代&#xff0c;智能體&#xff08;Agent&#xff09;技術正逐漸成為推動自動化和智能化的關鍵力量。OpenManus&#xff0c;由 MetaGPT 團隊開發的開源 AI 智能體框架&am…

利用 SQL Server 作業實現異步任務處理,簡化系統架構

在現代企業系統中&#xff0c;異步任務是不可或缺的組成部分&#xff0c;例如&#xff1a; 電商系統中的訂單超時取消&#xff1b; 報表系統中的異步數據導出&#xff1b; CRM 系統中的客戶積分計算。 傳統的實現方式通常涉及引入消息隊列&#xff08;如 RabbitMQ、Kafka&a…

ubuntu sh安裝包的安裝方式

ubuntu sh安裝包的安裝方式以Miniconda2為例 https://repo.anaconda.com/miniconda/ 如果需要python2.7版本可下載以下版本 Miniconda2-latest-Linux-x86_64.sh 打開終端輸入安裝命令 sudo sh Miniconda2-latest-Linux-x86_64.sh 然后按提示安裝&#xff0c;注意安裝位置 …

gRPC開發指南:Visual Studio 2022 + Vcpkg + Windows全流程配置

前言 gRPC作為Google開源的高性能RPC框架&#xff0c;在微服務架構中扮演著重要角色。本文將詳細介紹在Windows平臺下&#xff0c;使用Visual Studio 2022和Vcpkg進行gRPC開發的完整流程&#xff0c;包括環境配置、項目搭建、常見問題解決等實用內容。 環境準備 1. 安裝必要組…

C#控制流

&#x1f9e9; 一、控制流概述 C# 中的控制流語句用于根據條件或循環執行代碼塊。它們是程序邏輯的核心部分。 ? 二、1. if、else if、else int score 85;if (score > 90) {Console.WriteLine("優秀"); } else if (score > 60) {Console.WriteLine("及…