以重绘状态栏,遮盖状态栏为例: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 悬浮窗相关推荐

  1. android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用

    第一.通过eclipse新建一个工程名为HelloJni的android工程,并编译. 第二.右键工程-->Android Tools --> Add Native Support,出现如 ...

  2. android 为什么java文件下载_java – Android:如何在android下载文件?

    我正在尝试从URL下载文件.我有以下代码. package com.example.downloadfile; import java.io.BufferedOutputStream; import ...

  3. java与android https,java – Https连接Android

    我做一个猜测,但如果你想要一个实际的握手发生,你必须让Android知道你的证书.如果你想只接受无论什么,然后使用这个伪代码来获得你需要与Apache HTTP客户端: SchemeRegistry ...

  4. android调用java接口_java/Android 接口调用的几种写法

    虽然Handler用的地方比较普遍,但是接口也有他的独特之处,比较直观,然后降低了耦合性 如有一接口,需要将数据传给使用的activity中,接口如下 public interfacePushValu ...

  5. 安卓java浮层不响应点击事件,Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码...

    Android可以在所有应用上方添加View,就是给WindowManager添加一个View,在创建的View的时候可以给这个View设置LayoutParams(android.view.Wind ...

  6. Android M及以上版本系统 悬浮窗权限 的解决方案

    Android M及以上版本系统 悬浮窗权限 的解决方案 Android的窗口体系中,WindowManager占有非常重要的地位,平时我们使用悬浮窗会遇到一些权限的问题. 当 Android工程在 ...

  7. Android窗口Window的创建(悬浮窗)

    创建悬浮窗以及基于无障碍服务的窗口 关于悬浮窗的创建 启动悬浮窗 关于前台服务 启动服务 无障碍窗口 知识点 参考链接 关于悬浮窗的创建 首先需要获取WindowManager WindowManag ...

  8. android cpu 悬浮窗口,Android 使用 WindowManager 实现悬浮窗监控 cpu 温度

    前文概要 连续四篇介绍了车载设置,主要都是和源码相关,还未看过的,可以参考借鉴学习一下源码知识.车载设置–按键提示音 本文开始进入下一个篇章,主要是和 camera 相关,例如倒车,TV ,360 全 ...

  9. android显示二维毫秒,Android 悬浮窗显示毫秒级时间

    Android 悬浮窗显示毫秒级时间Android 悬浮窗显示毫秒级时间. 运行效果如下: 1.新建工程"FloatWindowDemo2", 工程如下: 2. "Mai ...

最新文章

  1. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——1.2 数字图像处理与机器视觉...
  2. 数字图像处理的就业前景
  3. inteliji 优化
  4. linux 多域名绑定
  5. Netty 服务 如何 接收新的连接
  6. qt android刘海屏状态栏,华为Mate30 Pro设计曝光:仍配刘海屏+3D结构光
  7. LoadRunner10自带的WEBTOURS,无法显示Flights页面问题解决办法
  8. 批量关停azure vm_如何在Azure中使用Visual Studio和VM数据库
  9. 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用
  10. 19隆冬的倔强(updating)
  11. Python数据可视化:分析38个城市的居住自由指数
  12. 语音合成学习(一)综述
  13. Ubuntu 20.4 美化桌面、美化引导界面、Mac 既视感
  14. java实现画笔的画圆与矩形功能_Java实现画线、矩形、椭圆、字符串功能
  15. Jmeter接口测试中参数化的多种方法,你知道的有几种?欢迎评论留言。
  16. STM32之ADC的理解及运用
  17. 图解pandas的数据合并merge
  18. 【板栗糖GIS】为什么内网穿透过的地址出现Tunnel not found
  19. 带负荷测试要求二次最小电流_带负荷测向量简单分析方法
  20. stm32引脚速度GPIO_Speed的区别

热门文章

  1. Discuz! Q 常见问题 QA
  2. 西门子1500和300哪个贵_西门子S7-300plc间接寻址和西门子S7-1200/1500指令的特点和区别...
  3. 牛客 题目:233串(两个233串相乘)
  4. 战略地位与行动评价矩阵(转载)
  5. js/jq/HTML5实现 鱼骨图(因果图) 附下载地址demo
  6. 记录我和几个女人的情感经历
  7. 雾里看花的PDM系统实施
  8. mxc sdma 分析
  9. 安装tpcc mysql_MySQL:安装tpcc 标准测试包
  10. 微信小程序接入emq