Android纯java悬浮窗,android 悬浮窗
以重绘状态栏,遮盖状态栏为例:java
一、设置 WindowManager.LayoutParams 属性android
public static WindowManager.LayoutParams getStatusViewParams(Context ctx, WindowManager mWindowManager) {
//反射状态栏高度
int actionBarHight = 0;
int resourceId = ctx.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
actionBarHight = ctx.getResources().getDimensionPixelSize(resourceId);
}
// 设置LayoutParams(全局变量)相关参数
WindowManager.LayoutParams mStatusBarParams = new WindowManager.LayoutParams();
//TYPE_SYSTEM_ERROR 须要控件获取焦点时才须要 TYPE_SYSTEM_OVERLAY
mStatusBarParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
mStatusBarParams.format = PixelFormat.RGBA_8888;
mStatusBarParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
mStatusBarParams.gravity = Gravity.CENTER | Gravity.TOP; // 调整悬浮窗口至左上角
// 以屏幕左上角为原点,设置x、y初始值
mStatusBarParams.x = 0;
mStatusBarParams.y = 0;
// 设置悬浮窗口长宽数据
mStatusBarParams.width = mWindowManager.getDefaultDisplay().getWidth();
mStatusBarParams.height = actionBarHight;
//设置加载动画
mStatusBarParams.windowAnimations=android.R.style.Animation_Translucent;
Log.e(TAG,"width:"+mStatusBarParams.width +"\nheight:" + mStatusBarParams.height );
return mStatusBarParams;
}
须要重点注意 :WindowManager.LayoutParams的type属性app
TYPE_SYSTEM_ERROR 须要控件获取焦点时才须要(例以下拉、点击事件等);
TYPE_SYSTEM_OVERLAY 不能够获取焦点;
TYPE_TOAST 不须要权限显示悬浮窗;从4.4开始, 使用TYPE_TOAST的同时还能够接收触摸事件和按键事件了, 而4.4之前只能显示出来, 不能交互.
二、添加、修改、移除悬浮窗方法动画
addView、updateViewLayout、removeView
三、附注ui
1)悬浮窗添加流程:code
WindowManager.addView -> ViewRootImpl.setView -> WindowSession.addToDisplay(AIDL进行IPC) -> WindowManagerService.addWindow() -> ViewRootImpl.setVieworm
2)反射通知栏操做:事件
public static void OpenNotify(Context ctx) {
// TODO Auto-generated method stub
int currentApiVersion = android.os.Build.VERSION.SDK_INT;
try {
Object service = ctx.getSystemService("statusbar");
Class> statusbarManager = Class
.forName("android.app.StatusBarManager");
Method expand = null;
if (service != null) {
if (currentApiVersion <= 16) {
expand = statusbarManager.getMethod("expand");
} else {
expand = statusbarManager
.getMethod("expandNotificationsPanel");
}
expand.setAccessible(true);
expand.invoke(service);
}
} catch (Exception e) {
}
}
Android纯java悬浮窗,android 悬浮窗相关推荐
- android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用
第一.通过eclipse新建一个工程名为HelloJni的android工程,并编译. 第二.右键工程-->Android Tools --> Add Native Support,出现如 ...
- android 为什么java文件下载_java – Android:如何在android下载文件?
我正在尝试从URL下载文件.我有以下代码. package com.example.downloadfile; import java.io.BufferedOutputStream; import ...
- java与android https,java – Https连接Android
我做一个猜测,但如果你想要一个实际的握手发生,你必须让Android知道你的证书.如果你想只接受无论什么,然后使用这个伪代码来获得你需要与Apache HTTP客户端: SchemeRegistry ...
- android调用java接口_java/Android 接口调用的几种写法
虽然Handler用的地方比较普遍,但是接口也有他的独特之处,比较直观,然后降低了耦合性 如有一接口,需要将数据传给使用的activity中,接口如下 public interfacePushValu ...
- 安卓java浮层不响应点击事件,Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码...
Android可以在所有应用上方添加View,就是给WindowManager添加一个View,在创建的View的时候可以给这个View设置LayoutParams(android.view.Wind ...
- Android M及以上版本系统 悬浮窗权限 的解决方案
Android M及以上版本系统 悬浮窗权限 的解决方案 Android的窗口体系中,WindowManager占有非常重要的地位,平时我们使用悬浮窗会遇到一些权限的问题. 当 Android工程在 ...
- Android窗口Window的创建(悬浮窗)
创建悬浮窗以及基于无障碍服务的窗口 关于悬浮窗的创建 启动悬浮窗 关于前台服务 启动服务 无障碍窗口 知识点 参考链接 关于悬浮窗的创建 首先需要获取WindowManager WindowManag ...
- android cpu 悬浮窗口,Android 使用 WindowManager 实现悬浮窗监控 cpu 温度
前文概要 连续四篇介绍了车载设置,主要都是和源码相关,还未看过的,可以参考借鉴学习一下源码知识.车载设置–按键提示音 本文开始进入下一个篇章,主要是和 camera 相关,例如倒车,TV ,360 全 ...
- android显示二维毫秒,Android 悬浮窗显示毫秒级时间
Android 悬浮窗显示毫秒级时间Android 悬浮窗显示毫秒级时间. 运行效果如下: 1.新建工程"FloatWindowDemo2", 工程如下: 2. "Mai ...
最新文章
- 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——1.2 数字图像处理与机器视觉...
- 数字图像处理的就业前景
- inteliji 优化
- linux 多域名绑定
- Netty 服务 如何 接收新的连接
- qt android刘海屏状态栏,华为Mate30 Pro设计曝光:仍配刘海屏+3D结构光
- LoadRunner10自带的WEBTOURS,无法显示Flights页面问题解决办法
- 批量关停azure vm_如何在Azure中使用Visual Studio和VM数据库
- 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用
- 19隆冬的倔强(updating)
- Python数据可视化:分析38个城市的居住自由指数
- 语音合成学习(一)综述
- Ubuntu 20.4 美化桌面、美化引导界面、Mac 既视感
- java实现画笔的画圆与矩形功能_Java实现画线、矩形、椭圆、字符串功能
- Jmeter接口测试中参数化的多种方法,你知道的有几种?欢迎评论留言。
- STM32之ADC的理解及运用
- 图解pandas的数据合并merge
- 【板栗糖GIS】为什么内网穿透过的地址出现Tunnel not found
- 带负荷测试要求二次最小电流_带负荷测向量简单分析方法
- stm32引脚速度GPIO_Speed的区别