浮窗就是当当前页面关闭后,仍能在手机上显示的窗口,像浮在最上层一样,一直存在,一般可跟随手拖动而移动。
加速球就是一个浮窗。
浮窗的大小和形状等都可以自己设定,不是一定的。

效果(屏幕中小方形为浮窗,可拖动,下面的浮窗按钮与本文无关):

开启浮窗需要首先开启手机的浮窗权限,有些手机默认不允许开启浮窗:找到manifest下的AndroidManifest.xml文件,在其中添加一句代码,开启权限:

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

开启后可以开始写代码了。

只做浮窗demo,不添加其他功能,直接在activity中进行:
先声明要用到的变量:

//浮窗private WindowManager.LayoutParams lp = new WindowManager.LayoutParams();private static WindowManager windowManager;//浮窗内容private static ImageView imageView;

然后再onCreat中添加以下代码:

 //浮窗获得servicewindowManager  = (WindowManager) getApplication().getSystemService(WINDOW_SERVICE);lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT |WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;lp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;lp.gravity = Gravity.LEFT|Gravity.TOP;  //显示在屏幕左上角//显示位置与指定位置的相对位置差lp.x = 0;lp.y = 0;//悬浮窗的宽高lp.width = WindowManager.LayoutParams.WRAP_CONTENT;lp.height = WindowManager.LayoutParams.WRAP_CONTENT;//设置浮窗为透明,如果不设置为透明,图片下面的部分浮窗会为黑色(默认黑,也可能为其他色),不好看lp.format = PixelFormat.TRANSPARENT;//移除窗口if (imageView != null){windowManager.removeView(imageView);}//imageview设置imageView = new ImageView(getApplicationContext());
imageView.setImageResource(R.mipmap.ic_launcher);
windowManager.addView(imageView,lp);//imageview触摸监听imageView.setOnTouchListener(new View.OnTouchListener() {private float lastX, lastY;private float nowX, nowY;private float tranX,tranY;@Overridepublic boolean onTouch(View v, MotionEvent event) {boolean ret = false;switch (event.getAction()){//按下case MotionEvent.ACTION_DOWN://上次位置lastX = event.getRawX();lastY = event.getRawY();ret = true;break;//拖动case MotionEvent.ACTION_MOVE://当前目标位置nowX = event.getRawX();nowY = event.getRawY();tranX = nowX - lastX;tranY = nowY - lastY;//移动lp.x += tranX;lp.y += tranY;//更新位置windowManager.updateViewLayout(imageView,lp);//记录当前坐标作为下一次计算的上一次移动的位置坐标lastX = nowX;lastY = nowY;break;//弹起不操作case MotionEvent.ACTION_UP:break;}return ret;}});Toast.makeText(MainActivity.this,"已开启Toucher",Toast.LENGTH_SHORT).show();

简易的初始在屏幕左上角,大小和图片一样大,可拖动的浮窗完成。

仍在入门,如有错误,欢迎指出

Android浮窗实现(WindowManager)相关推荐

  1. Android浮窗权限判断

    在开启浮窗前,要判断一下,是否能够得到浮窗权限打开浮窗. 在方法中添加以下代码: //悬浮窗权限判断if (Settings.canDrawOverlays(MainActivity.this)) { ...

  2. android浮窗播放器,Android仿优酷视频的悬浮窗播放效果

    之前接了需求要让视频播放时可以像优酷视频那样在悬浮窗里播放,并且悬浮窗和主播放页面之间要实现无缝切换,项目中使用的是自封装的ijkplayer 这个要求就代表不能在悬浮窗中新建视频控件,所以需要在悬浮 ...

  3. Android 浮窗开发之窗口层级

    很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...

  4. android 浮窗示例代码,Android 浮窗开发之窗口层级(示例代码)

    很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...

  5. Android浮窗权限研究(转载)

    这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适配,这个需要大家的一起努力,这个博客的名字永远都是一个将来时 ...

  6. python 悬浮窗_python浮窗

    import wx; app = wx.App(); win = wx.Frame(None,title="老穆视频",pos=(900,20),size=(300,60),sty ...

  7. Service: 三、小窗口(浮窗) 播放视频

    文章目录 前言 一.先来张效果图 二.使用步骤 1.配置清单文件 2.编写 Service 3. Activity 4.请求权限 5.浮窗的页面贴一下 三.画中画 总结 前言 本篇以简单的浮窗视频为例 ...

  8. Android音乐浮窗播放器

    这是来到公司的第一个小项目.做一个音乐播放器,内容如下 Float Music(浮窗音乐播放器) 考点: 服务, 音乐播放, 浮窗界面, 列表界面, 自定义view, 手势操作 功能描述: 1.音乐列 ...

  9. Android中浮窗的开发详述

    1. 简单概述一下开发浮窗的步骤 (1)创建一个服务,在服务中可以创建一个Handler接收Activity发过来的命令,在服务中创建浮窗和移除浮窗: (2)在Activty中绑定服务,并可通过Mes ...

最新文章

  1. python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法
  2. ROS 内外网做双网卡绑定负载分流教程bonding 配置教程
  3. 全局负载均衡通俗介绍_“集群和负载均衡”等的通俗解释
  4. 2.看板方法---什么是看板方法
  5. 华为价值评价体系的四个基本假设
  6. android 项目交接文档,产品交付规范文档
  7. 【IntelliJ IDEA】设置字体大小
  8. (转)中小IT企业项目团队人员配置管理
  9. pacman 查询_ArchLinux的包管理系统: pacman
  10. 学习达人榜:学无止尽,追梦无悔
  11. java计算机毕业设计 - 大转盘抽奖微信小程序
  12. iOS 初学者功能代码大集合,个人笔记
  13. c++ 字符串 判断中文
  14. Python表达式 n1 与 表达式n%2
  15. .mht文件转换为html
  16. 网络营销、网络推广必备工具网站大全
  17. 文件夹批量改名,将文件夹名称小写字母转为大写字母
  18. 域名需要备案吗?不备案能否解析吗?
  19. 基于Spring Cloud的微服务架构分析
  20. 2022高级JAVA开发面试题精选

热门文章

  1. 【已解决】如何让压缩率达到最大?使用lrzip工具进行文件压缩(好用)
  2. 视频怎么做GIF表情包?教你一键生成gif动图
  3. Holt Winter 指数平滑模型
  4. 在Chrome中使用非应用商店安装的扩展程序
  5. 我为什么反对用各类框架
  6. 互联网产品之运营管理
  7. python tuple用处_Python入门之最少必要知识
  8. 学校学生计算机配备标准,规模控制在900人至5000人 每百名学生应有15台电脑
  9. 【搬家】写一个技术博客
  10. pageX/pageY、clientX/clientY、screenX/screenY的区别