本文来自:http://www.eoeandroid.com/thread-56613-1-1.html
最近一些软件有了很牛X的悬浮窗口功能,很好奇怎么实现的,刚刚终于弄出来了...原理就是调用WindowManager直接操控View,然后再配合相应的WindowManager.LayoutParams属性,就OK了。这样产生出来的View根据LayoutParams的属性不同,效果也不一样。有关具体的属性,请自行参考SDK文档。
以下代码请仅供演示:
- public class myFloatView extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button bb=new Button(getApplicationContext());
- WindowManager wm=(WindowManager)getApplicationContext().getSystemService("window");
- WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
- wmParams.type=2002; //type是关键,这里的2002表示系统级窗口,你也可以试试2003。
- wmParams.format=1;
- /**
- *这里的flags也很关键
- *代码实际是wmParams.flags |= FLAG_NOT_FOCUSABLE;
- *40的由来是wmParams的默认属性(32)+ FLAG_NOT_FOCUSABLE(8)
- */
- wmParams.flags=40;
- wmParams.width=40;
- wmParams.height=40;
- wm.addView(bb, wmParams);
- }
- }
复制代码
PS:本代码在Android2.3下测试无错(从API Level来看,实际上android1.5都可行)!另外别忘了在AndroidManifest.xml文件中加入如下权限:
- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
复制代码
http://www.xsmile.net/?p=404
=============================
已经给出可自由移动悬浮窗口的Demo,请移步至这里:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=58679&extra=
分享到:
相关推荐
### Android中悬浮窗口的实现原理和示例代码 在Android开发过程中,有时我们需要实现一个能够悬浮于所有应用程序之上的窗口,比如悬浮按钮、悬浮菜单等。这类功能在很多场景下非常实用,例如在多任务处理时提供快速...
下面是一个简单的悬浮窗口实现示例: ```java WindowManager.LayoutParams params = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Build....
在"Test101"这个文件中,可能包含了实现上述功能的代码示例,包括悬浮窗口的布局设计、权限请求、事件处理等。通过分析和学习这个示例,开发者可以更好地理解和掌握Android悬浮窗口的开发技巧。 总之,创建Android...
这个技术常用于创建具有视觉效果的应用程序,如制作半透明的对话框或者悬浮窗口。 首先,我们需要了解什么是API函数。API是操作系统为开发者提供的接口,通过这些接口,程序员可以调用操作系统内核的功能,比如控制...
#### 悬浮球功能实现原理 悬浮球效果通常用在用户界面上,用于提供快捷操作,例如显示退出登录、用户信息等快捷入口。实现这一效果,需要将一个固定的HTML元素放置在页面上,并使用CSS样式使其固定在边角位置。同时...
以下是请求权限的示例代码: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.SYSTEM_ALERT_WINDOW) != PackageManager.PERMISSION_GRANTED) { ...
以下是实现浮动窗口的一个简化的代码示例: ```java public class FloatWindowService extends Service { // ... 省略其他成员变量和初始化代码 ... private void createView() { // 加载布局文件或创建自定义...
首先,让我们了解悬浮窗在Android中的实现原理。Android系统提供了一个名为`WindowManager`的服务,通过它可以将View添加到屏幕的任意位置,包括创建悬浮窗。悬浮窗主要涉及到`LayoutParams`类型,特别是`TYPE_...
通过分析`TopFrame`类的代码,开发者可以了解到如何创建、更新和管理悬浮窗口,并且通过`使用前必读我安卓3.doc`文档来理解具体的实现细节和使用技巧。对于想要深入学习Android开发,尤其是对自定义视图和窗口管理感...
【VC++实现仿MSN弹出窗口】:在Windows编程领域,使用VC++(Microsoft Visual C++)开发桌面应用时,有时需要实现类似MSN聊天软件那样的弹出窗口效果,以提供通知或者消息展示功能。这种窗口通常具有轻量、非模态、...
在提供的压缩文件"suspendWnd"中,可能包含了实现上述功能的源代码示例或进一步的解释。你可以参考这些资源,以便更好地理解并实践这个过程。 总之,通过掌握Delphi的窗体风格控制、Alpha通道调整以及鼠标消息处理...
通过在AndroidManifest.xml中声明此权限,并在运行时请求用户授权,开发者可以创建一个悬浮窗口。通常,这种类型的Activity会使用`Type.TYPE_SYSTEM_ALERT`的WindowManager.LayoutParams来设置窗口类型。 2. 使用`...
"jQuery仿美橙右侧悬浮在线qq客服代码"就是一个旨在实现此类功能的代码示例。本文将深入解析这个代码的核心原理,帮助读者理解和应用。 首先,我们要明白jQuery是什么。jQuery是一个快速、简洁的JavaScript库,它...
这个"安卓Andriod源码——悬浮窗.zip"压缩包可能包含了实现Android悬浮窗功能的源代码示例。 首先,让我们来了解一下Android悬浮窗的基本原理。在Android中,悬浮窗通常通过创建一个类型为TYPE_SYSTEM_ALERT的...
以下是一个简单的请求权限的示例: ```java if (ContextCompat.checkSelfPermission(this, Manifest.permission.SYSTEM_ALERT_WINDOW) != PackageManager.PERMISSION_GRANTED) { ActivityCompat....
这种设计通常结合JavaScript和CSS技术实现,以便在用户浏览网页时,一个带有QQ客服号码的小窗口会悬浮在页面的一角,方便用户随时发起咨询。 JavaScript是网页动态效果的核心语言,它允许我们创建交互式的用户界面...
在Android开发中,悬浮窗(Floating Window)是一种特殊类型的窗口,它可以在用户界面的顶层显示,即使用户切换到其他应用,悬浮窗...通过以上介绍和代码示例,你应该对如何实现一个Android悬浮窗有了更深入的理解。
在Android开发中,自定义PopWindow是一个非常实用的技术,它允许...通过深入理解其工作原理和实现方式,开发者可以创建出满足各种需求的弹出窗口。而集成文档和示例代码则能帮助开发者更快地将理论知识转化为实际应用。
下面将详细探讨Android悬浮窗的实现原理、相关API以及如何创建一个简单的悬浮窗Demo。 首先,Android悬浮窗的核心在于`SYSTEM_ALERT_WINDOW`权限。在AndroidManifest.xml文件中,你需要添加以下权限: ```xml ```...