Android浮窗实现(WindowManager)
浮窗就是当当前页面关闭后,仍能在手机上显示的窗口,像浮在最上层一样,一直存在,一般可跟随手拖动而移动。
加速球就是一个浮窗。
浮窗的大小和形状等都可以自己设定,不是一定的。
效果(屏幕中小方形为浮窗,可拖动,下面的浮窗按钮与本文无关):
开启浮窗需要首先开启手机的浮窗权限,有些手机默认不允许开启浮窗:找到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)相关推荐
- Android浮窗权限判断
在开启浮窗前,要判断一下,是否能够得到浮窗权限打开浮窗. 在方法中添加以下代码: //悬浮窗权限判断if (Settings.canDrawOverlays(MainActivity.this)) { ...
- android浮窗播放器,Android仿优酷视频的悬浮窗播放效果
之前接了需求要让视频播放时可以像优酷视频那样在悬浮窗里播放,并且悬浮窗和主播放页面之间要实现无缝切换,项目中使用的是自封装的ijkplayer 这个要求就代表不能在悬浮窗中新建视频控件,所以需要在悬浮 ...
- Android 浮窗开发之窗口层级
很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...
- android 浮窗示例代码,Android 浮窗开发之窗口层级(示例代码)
很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...
- Android浮窗权限研究(转载)
这篇博客主要介绍的是 Android 主流各种机型和各种版本的悬浮窗权限适配,但是由于碎片化的问题,所以在适配方面也无法做到完全的主流机型适配,这个需要大家的一起努力,这个博客的名字永远都是一个将来时 ...
- python 悬浮窗_python浮窗
import wx; app = wx.App(); win = wx.Frame(None,title="老穆视频",pos=(900,20),size=(300,60),sty ...
- Service: 三、小窗口(浮窗) 播放视频
文章目录 前言 一.先来张效果图 二.使用步骤 1.配置清单文件 2.编写 Service 3. Activity 4.请求权限 5.浮窗的页面贴一下 三.画中画 总结 前言 本篇以简单的浮窗视频为例 ...
- Android音乐浮窗播放器
这是来到公司的第一个小项目.做一个音乐播放器,内容如下 Float Music(浮窗音乐播放器) 考点: 服务, 音乐播放, 浮窗界面, 列表界面, 自定义view, 手势操作 功能描述: 1.音乐列 ...
- Android中浮窗的开发详述
1. 简单概述一下开发浮窗的步骤 (1)创建一个服务,在服务中可以创建一个Handler接收Activity发过来的命令,在服务中创建浮窗和移除浮窗: (2)在Activty中绑定服务,并可通过Mes ...
最新文章
- python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法
- ROS 内外网做双网卡绑定负载分流教程bonding 配置教程
- 全局负载均衡通俗介绍_“集群和负载均衡”等的通俗解释
- 2.看板方法---什么是看板方法
- 华为价值评价体系的四个基本假设
- android 项目交接文档,产品交付规范文档
- 【IntelliJ IDEA】设置字体大小
- (转)中小IT企业项目团队人员配置管理
- pacman 查询_ArchLinux的包管理系统: pacman
- 学习达人榜:学无止尽,追梦无悔
- java计算机毕业设计 - 大转盘抽奖微信小程序
- iOS 初学者功能代码大集合,个人笔记
- c++ 字符串 判断中文
- Python表达式 n1 与 表达式n%2
- .mht文件转换为html
- 网络营销、网络推广必备工具网站大全
- 文件夹批量改名,将文件夹名称小写字母转为大写字母
- 域名需要备案吗?不备案能否解析吗?
- 基于Spring Cloud的微服务架构分析
- 2022高级JAVA开发面试题精选