有时候需要在显示UI的时候不中断原来的Activity
比如在播放视频时或者玩游戏时,需要显示某个菜单(可以是系统提示,或类似于TV菜单)
显然用Activity来做是不行的,因为新Activity启动的时候会把原来的Activity pause掉
怎么做呢,可以参考系统电量提示窗口或statusbar那样在service中启动窗口
新窗口将会出现在UI最上层,但不会中断原来的Activity
效果图,一个是播视频中,一个是玩游戏中:


看一下WindowManager.LayoutParams的两个属性:
int TYPE_SYSTEM_ALERT Window type: system window, such as low power alert.
int TYPE_SYSTEM_OVERLAYWindow type: system overlay windows, which need to be displayed on top of everything else.
这两个不错,正是我们想要的,上代码~
Seivece中代码
创建了一个dialog,可以调整dialog的位置、大小,dialog的从R.layout.main创建,动态添加UI数据
响应Ui上的OnClick操作
* manifest中需要相应的permission
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
*TYPE_SYSTEM_ALERT跟TYPE_SYSTEM_OVERLAY的区别
以上面的代码为例,system_alert窗口可以获得焦点,响应操作
system_overlay窗口显示的时候焦点在后面的Activity上,仍旧可以操作后面的Activity
* 上面的代码中请留意d.show()的位置,只有在show之后才能调整dialog大小及更新数据
* 可以调整的Attributes,先dump出来
lp.flags = 0x20002, //FLAG_DIM_BEHIND | FLAG_ALT_FOCUSABLE_IM
lp.gravity = 0x11, // CENTER
lp.type= 0x7d3, //TYPE_SYSTEM_ALERT
这些Attr都可以设置,具体定义在API文档WindowManager.LayoutParams中
分享到:
相关推荐
这个权限允许应用在其他应用之上显示窗口,包括在主屏幕或其他应用界面之上弹出对话框。 首先,要在AndroidManifest.xml文件中声明`SYSTEM_ALERT_WINDOW`权限,如下所示: ```xml <uses-permission android:name=...
此外,对于Android 8.0及以上版本,由于系统的限制,长时间显示`TYPE_TOAST`类型的窗口可能会被系统自动关闭,因此在实际应用中可能需要考虑其他类型的窗口,例如`TYPE_PHONE`或`TYPE_APPLICATION_OVERLAY`,但这...
这个`SYSTEM_ALERT_WINDOW`权限使得我们的应用可以在所有其他应用之上显示窗口。 接下来,我们创建一个`Service`来承载浮动窗口。在服务中,我们定义一个布局文件,它将作为浮动窗口的内容。以下是一个简单的布局...
在Android开发中,悬浮控件通常被称为悬浮窗或者系统悬浮窗,它可以在应用程序的顶层显示,允许用户在多个应用之间进行交互。这类控件在一些需要实时监控或快速操作的应用中非常常见,如音乐播放器的控制面板、游戏...
这个“adTest1_brotherddr_浮动窗口_android_”项目可能是一个示例或者教程,旨在教你如何在Android应用中创建并管理这样的浮动窗口。下面我们将深入探讨浮动窗口的相关知识点。 首先,要实现浮动窗口,我们需要...
在Android系统中,悬浮窗(通常被称为Floating Window或者Overlay)是一种可以覆盖在其他应用之上的UI元素,允许用户在执行其他任务的同时查看或操作这些窗口。这种功能在很多应用中都有所体现,如音乐播放器的歌词...
自Android 3.0(API级别11)起,系统引入了`TYPE_PHONE`和`TYPE_SYSTEM_ALERT`类型的窗口,允许开发者创建在所有应用之上显示的浮动窗口。然而,为了实现全局显示,我们需要使用`SYSTEM_ALERT_WINDOW`权限,这需要在...
特殊权限(Special Permissions)兼容库,悬浮窗权限(SYSTEM_ALERT_WINDOW)与系统设置修改权限(WRITE_SETTINGS) Android 6.0以前只要在manifest中申请了权限就是默认开启的 Android 6.0 需要在manifest中申请并且通过...
在Android系统中,"最前端浮动窗口"通常指的是悬浮窗(Floating Window)或者叫系统顶层窗口,这种技术常被用于实现各种创新的功能,比如音乐播放器的歌词显示、游戏外挂监控、即时通讯应用的聊天窗口等。...
在Android系统中,悬浮窗口(通常称为悬浮小部件或悬浮应用)是一种可以在用户界面上方显示的独立窗口,允许用户在执行其他操作的同时查看或使用该窗口。这种功能常见于各种辅助工具、聊天应用和多媒体播放器等。...
本篇文章将深入探讨如何在Android应用中实现这些功能,以及如何处理菜单键事件和设置窗口显示权限。 首先,让我们关注“状态栏图标”。在Android系统中,状态栏图标用于向用户显示应用的实时状态或通知。创建一个...
- **`TYPE_SYSTEM_OVERLAY`**(2006):表示系统覆盖窗口,用于显示悬浮窗等。 - **`TYPE_PRIORITY_PHONE`**(2007):表示优先级电话窗口,用于处理紧急通话。 #### 五、总结 通过本文的介绍,我们了解到了`...
- `TYPE_SYSTEM_OVERLAY`和`TYPE_SECURE_SYSTEM_OVERLAY`是覆盖在所有内容之上的系统窗口,但它们对焦点的处理有所不同。 理解并正确使用`WindowManager.LayoutParams`的属性,可以实现各种自定义的窗口效果,如...
总结来说,"Android浮动窗口demo"提供了一个实现悬浮窗功能的示例,通过创建Service、设置布局、处理权限以及控制显示和关闭,展示了如何在Android应用中实现实时网速显示或其他类似功能的悬浮窗口。这个示例对于...
- 对于Android O(API 26)及以上版本,应使用`TYPE_APPLICATION_OVERLAY`代替`TYPE_SYSTEM_ALERT`。 通过以上步骤,你可以创建一个基本的可拖动的悬浮窗口demo。然而,实际应用中可能还需要考虑更多因素,比如...
在Android系统中,"遮挡系统拨号界面"通常指的是创建一个悬浮窗口或者顶级窗口(Top Window),使其能够在用户进行拨号操作时显示在系统拨号界面之上,类似360来电显示那样显示一些自定义信息,比如联系人头像、姓名...
2. 使用`TYPE_PHONE`或`TYPE_SYSTEM_OVERLAY`:这些窗口类型允许Activity在顶部显示,不会被其他应用遮挡。它们常用于创建通知栏小部件或者快速操作。 二、创建窗口式Activity的步骤 1. 添加权限:在...
LayoutParams是一个抽象类,提供了多种类型的LayoutParams,包括TYPE_APPLICATION、TYPE_SYSTEM_OVERLAY、TYPE_PHONE、TYPE_SYSTEM_ALERT等。不同的LayoutParams类型对应不同的窗口类型。 三、悬浮窗实现步骤 1. ...
在Android 4.2及以上版本,系统引入了SYSTEM_ALERT_WINDOW权限,允许应用在所有其他应用之上显示窗口。在AndroidManifest.xml中,你需要添加以下权限: ```xml <uses-permission android:name="android.permission....
默认情况下,Activity的窗口类型是TYPE_APPLICATION,而要实现悬浮效果,我们需要将其更改为TYPE_PHONE或者TYPE_SYSTEM_ALERT,这样Activity就可以在其他应用之上显示了。 接下来,我们需要在AndroidManifest.xml...