悬浮框支持可拖动(已解决拖动后刷新回到原点的问题)
以下是个人封装控件进行可拖动的一个函数,直接调用就可以,代码如下: private static int screenWidth; private static int screenHeight; private static int lastX; private static int lastY; /*** view 的拖动事件* */ public static void moveView(Context mContext,View moveView){try {if(mContext==null||moveView==null){return;}screenWidth=UtilsUI.getMetric(mContext).widthPixels;screenHeight=UtilsUI .getMetric(mContext).heightPixels;moveView.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {int action=event.getAction();switch(action){case MotionEvent.ACTION_DOWN:lastX = (int) event.getRawX();lastY = (int) event.getRawY();break;/*** layout(l,t,r,b)* l Left position, relative to parentt Top position, relative to parentr Right position, relative to parentb Bottom position, relative to parent* */case MotionEvent.ACTION_MOVE:int x=(int)event.getRawX();int y=(int)event.getRawY();int dx =x- lastX;int dy =y- lastY;int left = v.getLeft() + dx;int top = v.getTop() + dy;int right = left+v.getWidth();int bottom = top + v.getHeight();if(left < 0){left = 0;right = left + v.getWidth();}if(right > screenWidth){right = screenWidth;left = right - v.getWidth();}if(top < 0){top = 0;bottom = top + v.getHeight();}if(bottom > screenHeight){bottom = screenHeight;top = bottom - v.getHeight();}v.layout(left, top, right, bottom);lastX = (int) event.getRawX();lastY = (int) event.getRawY();setParentLayout(v,left, top);break;case MotionEvent.ACTION_UP:break;}return true;}});} catch (Exception e) {e.printStackTrace();} } /*** 改变父布局位置以防止重绘后回到原点的问题* */ private static void setParentLayout(View v,int left, int top) {// 每次移动都要设置其layout,不然由于父布局可能嵌套listview,当父布局发生改变冲毁(如下拉刷新时)则移动的view会回到原来的位置RelativeLayout.LayoutParams lpFeedback = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);int curRight = screenWidth - left - v.getWidth();int curBottom = screenHeight - top - v.getHeight();lpFeedback.setMargins(left, top, curRight, curBottom);v.setLayoutParams(lpFeedback); }
代码调用:
moveView(myContext,myView)
悬浮框支持可拖动(已解决拖动后刷新回到原点的问题)相关推荐
- LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)
LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题) 参考文章: (1)LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题) (2)https://www.cn ...
- 为 VUE 项目添加 PWA 解决发布后刷新报错问题
为 VUE 项目添加 PWA 解决发布后刷新报错问题 参考文章: (1)为 VUE 项目添加 PWA 解决发布后刷新报错问题 (2)https://www.cnblogs.com/morang/p/9 ...
- Python使用pyinstaller打包成exe文件,并支持传入外部参(已解决打包后文件大的情况)
目录 一.为什么要打包 二.打包后文件大的问题 三.外部传参 3.1.sys库 3.2.argparse库 四.pyinstaller打包 4.1.安装包 4.2.打包命令 4.3.新环境打包 五.运 ...
- Linux工作站开机后鼠标很卡,(已解决)开机后鼠标延迟卡顿1分钟后就没事了是什么情况...
本帖最后由 mushizhizhi 于 2020-1-2 15:03 编辑 华硕B360M-K i5 8400 uhd630string> ...
- layui删除后刷新表格_LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)...
[HDOJ5952]Counting Cliques(DFS,剪枝) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5952 题意:求图中规模为s的团的 ...
- Access denied for user ...(已解决)
Access denied for user -(已解决) 问题描述 代码 import java.sql.*;public class text {public static void main(S ...
- 解决windows10 桌面拖动文件到微信后无反应问题,尝试记录
解决windows10 桌面拖动文件到微信后无反应问题 Windows 10 1)修改注册表.如图右键"EnableLUA" 选"修改".把值改成"0 ...
- element vue 点击一边拖拽改变宽度 解决拖动会选中文字的问题
实现效果: 实现代码: //最外边的这个是放表格容器的div <div @mousemove="shrinkMove" @mouseup="shrinkUp&quo ...
- 【已解决】程序文件被ESET NOD32误杀或拦截怎么办?以ENDPIINT SECURITY为例添加信任教程截图(ESET通用))
[已解决]程序文件被ESET NOD32误杀或拦截怎么办?以ENDPIINT SECURITY为例添加信任教程截图(ESET通用)) 程序文件可信无病毒,确被"误杀"误伤?如果安装 ...
最新文章
- Redis 桌面管理工具 RedisDesktopManager 2020.1 发布
- 神策数据王灼洲:方法论 + 实践,全面解析数据采集方案,必看!
- [IOI2011]Race
- 他患“不死癌症” 坐轮椅考上清华并获特等奖学金
- 编写程序,删除数组中重复的元素,并统计各元素出现的次数
- 重点做EUR/USD、EUR/JPY、GBP/USD。
- 蓝桥杯 ALGO-27 算法训练 FBI树 Java版
- 利用SQL SERVER 2008 的XML字段类型实现扩展属性
- tomcat启动报错:Address already in use: JVM_Bind
- BIO,NIO的区别,使用场景。
- php下一页的代码,php 实现文章上一页与下一页 代码
- 会计计算机学什么软件有哪些,会计一般要学什么软件
- PageHelper分页pageSize和total异常问题
- 华为--NAT技术easy IP 原理配置or实验详解
- Testbench设计篇1——激励的产生
- c++排序(CList类库)
- linux 命令 打开png,Linux:优化和压缩JPEG和PNG图片的命令行工具
- 青竹画材创业板IPO被终止:年营收4.15亿 文投基金是股东
- 全数字化城市道路视频监控存储解决方案
- 水泵状态监测与故障诊断
热门文章
- LOCAL_PRIVILEGED_MODULE 详解(2)
- 【开发工具】C/C++开发者必不可少的15款编译器+IDE
- 模块“CHUSBDLL.DLL.dll“可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64版本兼容 【已解决】
- 论文笔记翻译——Enhanced LSTM for Natural Language Inference(ESIM)
- OpenAL Lesson 2: Looping and Fadeaway(转载)
- 字节跳动张一鸣:给互联网人才的一些中肯建议!
- python爬虫实例电商_Python实现爬取并分析电商评论
- python中shutil是什么意思_python之shutil模块详解
- RAM与ROM的原理与区别
- 一个可恶的javascript病毒/木马解码之后的代码