对于自定义悬浮窗的移动,首先是有自定义悬浮窗的xml文件,其中最关键的是设置监听事件,然后重写监听事件即可。具体如代码所示:

对于应用在系统的悬浮窗权限需要在manifest中声明:

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

对于自定义的悬浮窗进行移动

public class FloatingService extends Service {private static final String TAG = "FloatingService";private WindowManager windowManager;private WindowManager.LayoutParams layoutParams;private View floatView;@Overridepublic void onCreate() {super.onCreate();//对于windown的控制windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);layoutParams = new WindowManager.LayoutParams();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;} else {layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;}layoutParams.format = PixelFormat.RGBA_8888;layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;layoutParams.gravity = Gravity.LEFT;//悬浮框在布局的位置layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;//悬浮窗的宽,不指定则无法滑动layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;//悬浮窗的高,不指定则无法滑动floatView = new View(getApplicationContext()); // 不依赖activity的生命周期floatView = View.inflate(getApplicationContext(), R.layout.float_view, null);}@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {showFloatingWindow();return super.onStartCommand(intent, flags, startId);}private void showFloatingWindow() {windowManager.addView(floatView, layoutParams);floatView.setOnTouchListener(new FloatingOnTouchListener());}private class FloatingOnTouchListener implements View.OnTouchListener {private int x;private int y;@Overridepublic boolean onTouch(View view, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:x = (int) event.getRawX();y = (int) event.getRawY();break;case MotionEvent.ACTION_MOVE:   //用于悬浮窗的滑动int nowX = (int) event.getRawX();int nowY = (int) event.getRawY();int movedX = nowX - x;int movedY = nowY - y;x = nowX;y = nowY;layoutParams.x = layoutParams.x + movedX;layoutParams.y = layoutParams.y + movedY;windowManager.updateViewLayout(view, layoutParams);break;default:break;}return false;}}@Overridepublic void onDestroy() {super.onDestroy();if (floatView != null) {windowManager.removeViewImmediate(floatView);}}
}

移动自定义悬浮窗(图片)相关推荐

  1. Android开发笔记(一百一十八)自定义悬浮窗

    WindowManager 在前面< Android开发笔记(六十六)自定义对话框>中,我们提到每个页面都是一个Window窗口,许多的Window对象需要一个管家来打理,这个管家我们称之 ...

  2. Android中自定义悬浮窗

    有时候,我们可能会需要制作一个始终悬浮的窗口显示一些关键信息.它独立于我们的页面,可以在不妨碍用户操作的情况下显示信息.这里我们就学习一下悬浮窗的做法. 1.WindowManager的常用方法 ge ...

  3. android 自定义悬浮框,Android自定义悬浮窗

    FloatWindow readme-中文 Android自定义悬浮窗 原理很简单,就是借用了WindowManager这个管理类来实现的. 1.首先在AndroidManifest.xml中添加使用 ...

  4. Qt 自定义悬浮窗(带动画,类似QQ拼音输入法)

    1.运行效果 实现功能: 1.可拖动. 2.可显示,可隐藏 . 3.悬浮在主界面上面. 4.带动画. 2.ui界面  3.源码 //FloatingWindow.h #pragma once#incl ...

  5. html鼠标自定义悬浮窗,【推荐】js+DIV悬浮窗定位到鼠标位置的源代码

    [推荐]js+DIV悬浮窗定位到鼠标位置的源代码 (2013-09-04 22:34:33) 标签: 评论 完美兼容火狐,IE等浏览器,js+DIV悬浮窗定位到鼠标位置的源代码!转帖请注明出处,这可是 ...

  6. qt android 悬浮窗,Qt 自定义悬浮窗(类似QQ拼音输入法)

    1.运行效果 实现功能: 1.可拖动. 2.可显示,可隐藏 . 3.悬浮在主界面上面. 4.目前只是一个简单的界面,什么功能都没有. 2.ui界面 3.源码 //FloatingWindow.h #i ...

  7. android悬浮窗按钮在哪,android——悬浮窗控件Toast

    前端 后端 Toast 是一个悬浮窗控件,在不影响用户操作的条件下,按动按钮显示悬浮窗. 不同的是,Toast不支持点击事件,需要函数调用.所以要在外部函数初始化我们按钮的 控件,当我们的对象V创建出 ...

  8. uniapp 悬浮窗插件(在其他应用上层显示) Ba-FloatWindow

    悬浮窗(在其他应用上层显示) Ba-FloatWindow 简介(下载地址) Ba-FloatWindow 是一款在其他应用上层显示的悬浮窗插件.支持多种场景:支持拖动:支持多个. 支持自动定义起始位 ...

  9. uniapp 悬浮窗(应用内、无需授权) Ba-FloatWindow2

    简介(下载地址) Ba-FloatWindow2 是一款应用内并且无需授权的悬浮窗插件.支持多种拖动:自定义位置.大小:支持动态修改. 支持自动定义起始位置 支持自定义悬浮窗大小 支持贴边显示 支持多 ...

最新文章

  1. Selenium+python --获取百度联想词
  2. 蔬菜名称大全500种_东莞市区常见野生植物大全——草本植物篇(一)
  3. 基于主成分分析与支持向量机的人脸识别
  4. php下载文件代码 数据库,PHP备份数据库生成SQL文件并下载的函数代码
  5. redis专题:redis的常用数据结构及使用场景
  6. java中KMP模式,Java数据结构-串及其应用-KMP模式匹配算法
  7. 解决:无法添加符号: DSO missing from command line
  8. 我的电脑缩略图模式盘符名字不见了
  9. 11.0.高等数学3-平面与直线的位置关系
  10. Apache-tomcat-8.5.82下载安装以及环境变量配置
  11. 2022最新短视频去水印解析API接口分享
  12. 德生收音机创始人梁伟(华工杰出校友)的无线电之梦
  13. 计算机考研失败后,大部分人的找工作现状
  14. 一刀工具箱 - 成语查询工具
  15. Django 邮箱设置
  16. 基于PHP+小程序(MINA框架)+Mysql数据库的旅游攻略小程序系统设计与实现
  17. 利用串口解析AIS接收机数据
  18. VisionPro通过SN码连接相机
  19. php表单生成Excel,PHPExcel多表单数据导出
  20. FL Studio最新20.9中文版DJ电子音乐制作神器

热门文章

  1. nginx 重定向及正则详解
  2. Linux之用户权限
  3. 删除数组中重复元素(C语言)
  4. java有返回值的方法回调_java调用回调机制详解
  5. python动态横道图_jQuery甘特图/日程图/横道图/插件
  6. python def __init__(self, name等多参数), def __init__(self)
  7. HTML——jQuery之事件绑定、取消事件绑定及事件委托
  8. Windows 下使用 nmap ncat 命令测试 UDP 端口连接
  9. C#取得日本和历,转换 日本历(又称为Wareki 历) 和暦转换 GetProperty取内部属性
  10. 西邮Linux兴趣小组2021最终面试题