移动自定义悬浮窗(图片)
对于自定义悬浮窗的移动,首先是有自定义悬浮窗的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);}}
}
移动自定义悬浮窗(图片)相关推荐
- Android开发笔记(一百一十八)自定义悬浮窗
WindowManager 在前面< Android开发笔记(六十六)自定义对话框>中,我们提到每个页面都是一个Window窗口,许多的Window对象需要一个管家来打理,这个管家我们称之 ...
- Android中自定义悬浮窗
有时候,我们可能会需要制作一个始终悬浮的窗口显示一些关键信息.它独立于我们的页面,可以在不妨碍用户操作的情况下显示信息.这里我们就学习一下悬浮窗的做法. 1.WindowManager的常用方法 ge ...
- android 自定义悬浮框,Android自定义悬浮窗
FloatWindow readme-中文 Android自定义悬浮窗 原理很简单,就是借用了WindowManager这个管理类来实现的. 1.首先在AndroidManifest.xml中添加使用 ...
- Qt 自定义悬浮窗(带动画,类似QQ拼音输入法)
1.运行效果 实现功能: 1.可拖动. 2.可显示,可隐藏 . 3.悬浮在主界面上面. 4.带动画. 2.ui界面 3.源码 //FloatingWindow.h #pragma once#incl ...
- html鼠标自定义悬浮窗,【推荐】js+DIV悬浮窗定位到鼠标位置的源代码
[推荐]js+DIV悬浮窗定位到鼠标位置的源代码 (2013-09-04 22:34:33) 标签: 评论 完美兼容火狐,IE等浏览器,js+DIV悬浮窗定位到鼠标位置的源代码!转帖请注明出处,这可是 ...
- qt android 悬浮窗,Qt 自定义悬浮窗(类似QQ拼音输入法)
1.运行效果 实现功能: 1.可拖动. 2.可显示,可隐藏 . 3.悬浮在主界面上面. 4.目前只是一个简单的界面,什么功能都没有. 2.ui界面 3.源码 //FloatingWindow.h #i ...
- android悬浮窗按钮在哪,android——悬浮窗控件Toast
前端 后端 Toast 是一个悬浮窗控件,在不影响用户操作的条件下,按动按钮显示悬浮窗. 不同的是,Toast不支持点击事件,需要函数调用.所以要在外部函数初始化我们按钮的 控件,当我们的对象V创建出 ...
- uniapp 悬浮窗插件(在其他应用上层显示) Ba-FloatWindow
悬浮窗(在其他应用上层显示) Ba-FloatWindow 简介(下载地址) Ba-FloatWindow 是一款在其他应用上层显示的悬浮窗插件.支持多种场景:支持拖动:支持多个. 支持自动定义起始位 ...
- uniapp 悬浮窗(应用内、无需授权) Ba-FloatWindow2
简介(下载地址) Ba-FloatWindow2 是一款应用内并且无需授权的悬浮窗插件.支持多种拖动:自定义位置.大小:支持动态修改. 支持自动定义起始位置 支持自定义悬浮窗大小 支持贴边显示 支持多 ...
最新文章
- Selenium+python --获取百度联想词
- 蔬菜名称大全500种_东莞市区常见野生植物大全——草本植物篇(一)
- 基于主成分分析与支持向量机的人脸识别
- php下载文件代码 数据库,PHP备份数据库生成SQL文件并下载的函数代码
- redis专题:redis的常用数据结构及使用场景
- java中KMP模式,Java数据结构-串及其应用-KMP模式匹配算法
- 解决:无法添加符号: DSO missing from command line
- 我的电脑缩略图模式盘符名字不见了
- 11.0.高等数学3-平面与直线的位置关系
- Apache-tomcat-8.5.82下载安装以及环境变量配置
- 2022最新短视频去水印解析API接口分享
- 德生收音机创始人梁伟(华工杰出校友)的无线电之梦
- 计算机考研失败后,大部分人的找工作现状
- 一刀工具箱 - 成语查询工具
- Django 邮箱设置
- 基于PHP+小程序(MINA框架)+Mysql数据库的旅游攻略小程序系统设计与实现
- 利用串口解析AIS接收机数据
- VisionPro通过SN码连接相机
- php表单生成Excel,PHPExcel多表单数据导出
- FL Studio最新20.9中文版DJ电子音乐制作神器
热门文章
- nginx 重定向及正则详解
- Linux之用户权限
- 删除数组中重复元素(C语言)
- java有返回值的方法回调_java调用回调机制详解
- python动态横道图_jQuery甘特图/日程图/横道图/插件
- python def __init__(self, name等多参数), def __init__(self)
- HTML——jQuery之事件绑定、取消事件绑定及事件委托
- Windows 下使用 nmap ncat 命令测试 UDP 端口连接
- C#取得日本和历,转换 日本历(又称为Wareki 历) 和暦转换 GetProperty取内部属性
- 西邮Linux兴趣小组2021最终面试题