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

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

相關文章

微信小程序中wxs

一、先新建wxs文件subutil.wxs 1、寫過濾器 //return class var isClass function(val) {if (val 0) {return grid-item} else if (val 1) {return temperature-error-slot} else if (val 2) {return chargingCycles-error-slot} else {return unrecognized-slot} } 2、…

Nginx攻略

🤖 作者簡介:水煮白菜王,一位前端勸退師 👻 👀 文章專欄: 前端專欄 ,記錄一下平時在博客寫作中,總結出的一些開發技巧和知識歸納總結?。 感謝支持💕💕&#…

常見系統設計

秒殺系統 前端層: 靜態資源緩存:通過CDN緩存商品圖片、頁面靜態HTML,減少回源請求。 請求合并:合并用戶頻繁刷新的請求(如10秒內僅允許一次真實請求)。 端側限流:通過JS或APP端限制用戶高頻點擊…

git撤回commit

最常見的幾種撤回方式: 目標使用命令是否保留修改撤回最后一次 commit,但保留代碼修改git reset --soft HEAD~1? 保留撤回最后一次 commit,并丟棄修改git reset --hard HEAD~1? 丟棄撤回某個 commit,但保留后續提交git revert …

docker 安裝運行mysql8.4.4

先前一直使用mysql5.7,最新公司新項目,無意翻閱看下5.x版本mysql官方已經不再支持,于是準備選用MySQL8,官方8.4版本是個長期支持版本,選則最新版本8.4.4,如下是MySQL官方對版本支持計劃 MySQL版本下載查看地…

[java八股文][MySQL面試篇]索引

索引是什么?有什么好處? 索引類似于書籍的目錄,可以減少掃描的數據量,提高查詢效率。 如果查詢的時候,沒有用到索引就會全表掃描,這時候查詢的時間復雜度是On如果用到了索引,那么查詢的時候&a…

低代碼平臺的版本管理深度解析

引言 在當今快速發展的軟件開發領域,低代碼平臺憑借其可視化界面和拖拽功能,極大地減少了手動編碼的工作量,顯著提高了開發效率和質量。它提供了豐富的預構建模塊、組件和服務,讓開發者能夠根據業務需求和邏輯進行組合與配置&…

Springboot項目由JDK8升級至JDK17全過程教程【文末附源碼】

1. 前言 最近一直想把我的開源項目maple-boot升級到jdk17版本,然后接入Spring AI。拖延癥犯了一直拖拖拖,最近時間空閑較多,開始陸續著手升級。 整個升級過程 計劃分為3步。 step1:先將項目升級到jdk17,使用正常ste…

同步與異步:軟件工程中的時空藝術與實踐智慧-以蜻蜓hr人才系統舉例-優雅草卓伊凡

同步與異步:軟件工程中的時空藝術與實踐智慧-以蜻蜓hr人才系統舉例-優雅草卓伊凡 概念解析:時空維度的編程范式 在軟件開發的宇宙中,同步(Synchronous)與異步(Asynchronous)是兩種根本不同的執行模式,它們塑造了程序與時間和空間…

TF-IDF算法的代碼實踐應用——關鍵詞提取、文本分類、信息檢索

回顧:TF-IDF算法詳解與實踐總結 上一篇文章我們深入剖析了TF-IDF的原理與細節,但實踐才是檢驗真理的唯一標準!今天,我們將從“紙上談兵”轉向“實戰演練”:通過純Python手寫實現與調用sklearn工具包兩種方式&#xff0…

前端面試寶典---事件循環面試題

瀏覽器進程模型與 JavaScript 執行機制 現代瀏覽器采用多進程架構,包含瀏覽器進程、渲染進程、網絡進程等多個核心進程。每個標簽頁會獨立創建一個渲染進程,負責頁面內容的解析、渲染和執行腳本代碼。 JavaScript 的單線程特性 JavaScript 采用單線程…

postman調用接口報錯401, Unauthorized, Invalid Token. null解決辦法

1、先登錄系統,F12找到token并復制 2、postman里選中Authorization,下拉選中選擇Bearer Token,把復制好的token黏貼到右側輸入框,如下所示: 3、如果是json格式的參數拷貝到Body中,如下所示: 4、 接口調用成功

C++----剖析list

前面學習了vector和string,接下來剖析stl中的list,在數據庫中學習過,list邏輯上是連續的,但是存儲中是分散的,這是與vector這種數組類型不同的地方。所以list中的元素設置為一個結構體,將list設計成雙向的&…

為什么已經有 Nginx 了,還需要服務網關?

在當前微服務架構中,雖然 Nginx 是一個高性能的反向代理和負載均衡服務器,但在實際使用中仍然存在諸多局限性。為了滿足運維效率、功能統一治理以及與微服務生態集成的需求,通常會在 Nginx 和業務服務之間引入一層基于 Java 實現的服務網關&a…

Kendo UI 中,ViewModel、DataSource 和 Grid的關系。Kendo 框架發起 HTTP 請求

Kendo UI 中,ViewModel、DataSource 和 Grid的關系 在 Kendo UI 中,ViewModel、DataSource 和 Grid 是構建動態數據應用的核心組件,三者協同工作實現數據的綁定、管理和展示。 一、三者關系圖解 #mermaid-svg-3lWxu2zWB23wDYEz {font-family…

宇樹開源 Qmini 雙足機器人,可通過 3D 打印動手制作,使用樹莓派作為主控制器

Unitree Qmini 是一款由宇樹科技設計并開源的低成本雙足機器人,開發者可以完全通過 3D 打印進行復刻。Qmini 專為業余愛好者、教育工作者和研究人員設計,使用戶能夠快速上手,并以類似樂高的模塊化方式組裝自己的機器人。該項目為機器人技術提…

解決華為云服務器無法ping通github問題

在push代碼到github上的時候,發現顯示22端口無法連接,在已經開放了端口,防火墻關閉的情況下仍然無法連接到GitHub。 發現是服務器和github斷連,選擇 sudo vim /etc/hosts 添加一下代碼 # GitHub Start140.82.121.4 gith…

關于electron-vite koffi 讀取 dll 打包等問題得記錄

koffi const koffi require(‘koffi’) import iconv from ‘iconv-lite’;const libPath path.resolve(__dirname, ‘…/…/resources/dll/sss.dll’) const yktLib koffi.load(libPath) const ret yktLib.func(‘string sss(string Url, string Data, string OutData)’…

【開發技術】.Net使用FFmpeg視頻特定幀上繪制內容

目錄 一、目的 二、解決方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg調用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 濾鏡來繪制 ROI 三、總結 一、目的 當前市場上有很多目標檢測智能識別的相關算法,當前調用一個醫療行業的AI識別算法后返回…

通過關鍵字批量抓取淘寶商品數據實現方法途徑分享--API

item_search 按關鍵字搜索淘寶商品item_search_tmall 按關鍵字搜索天貓商品item_search_pro 高級關鍵字搜索淘寶商品item_search_img 按圖搜索淘寶商品(拍立淘)item_search_shop 獲得店鋪的所有商品 一、引言 在電商領域,獲取淘寶商品數據對…