`
folksy
  • 浏览: 156823 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

悬浮窗口的实现原理,给出简单示例代码

阅读更多

本文来自:http://www.eoeandroid.com/thread-56613-1-1.html

 

最近一些软件有了很牛X的悬浮窗口功能,很好奇怎么实现的,刚刚终于弄出来了...原理就是调用WindowManager直接操控View,然后再配合相应的WindowManager.LayoutParams属性,就OK了。这样产生出来的View根据LayoutParams的属性不同,效果也不一样。有关具体的属性,请自行参考SDK文档。

以下代码请仅供演示:

  1. public class myFloatView extends Activity {
  2.     /** Called when the activity is first created. */
  3.     @Override
  4.     public void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         setContentView(R.layout.main);
  7.         Button bb=new Button(getApplicationContext());
  8.         WindowManager wm=(WindowManager)getApplicationContext().getSystemService("window");
  9.         WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
  10.         wmParams.type=2002;  //type是关键,这里的2002表示系统级窗口,你也可以试试2003。
  11.         wmParams.format=1;
  12.         /**
  13.          *这里的flags也很关键
  14.          *代码实际是wmParams.flags |= FLAG_NOT_FOCUSABLE;
  15.          *40的由来是wmParams的默认属性(32)+ FLAG_NOT_FOCUSABLE(8)
  16.          */
  17.         wmParams.flags=40;
  18.         wmParams.width=40;
  19.         wmParams.height=40;
  20.         wm.addView(bb, wmParams);     
  21.     }
  22. }
复制代码

PS:本代码在Android2.3下测试无错(从API Level来看,实际上android1.5都可行)!另外别忘了在AndroidManifest.xml文件中加入如下权限:

  1. <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中悬浮窗口的实现原理和示例代码

    调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View

    实现窗口悬浮效果

    Qt悬浮窗口,实现主窗口与子悬浮窗口之间的转换,悬浮窗口显示的桌面最顶端,且可以实现自动隐藏,当鼠标移动到窗口顶部,悬浮窗口又可以显示出来

    Android视频悬浮窗口实现的示例代码

    本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回 APP 页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: 悬浮窗口.gif 原理  WindowManager 对 View 视图进行添加...

    悬浮窗口小实例

    利用Dreamweaver制作网页悬浮窗口,移动下拉条,窗口相对位置不发生变化。

    WindowManager.addView()实现悬浮窗口播放视频

    安卓使用WindowManager.addView()简单实现悬浮窗口播放视频

    VC++对窗口悬浮的实现

    VC++对窗口悬浮的实现,类似QQ的悬浮功能。

    悬浮窗口和半透明实现效果

    此demo为悬浮窗口和半透明实现效果,代码较为简单,可供参考

    android悬浮窗口的实现

    android悬浮窗口的实现

    VB6.0仿迅雷悬浮窗口(图标)的实现源码.rar

    VB6.0仿迅雷悬浮窗口(图标)的实现源码,迅雷的悬浮窗相信大家很熟悉了,其实就是显示一个图标,悬浮在屏幕上,通过这个悬浮图标可单击右键调出菜单,双击图标则会显示主窗口,本源码模拟了悬浮窗口的实现,另外是...

    Qt悬浮窗口

    试着用Qt简单模拟了一个悬浮气泡。挺简单的,首先是窗口去边框,背景透明,然后重写窗口拖拽功能,最后用事件过滤器实现边缘黏滞效果

    使用electron实现百度网盘悬浮窗口功能的示例代码

    主要介绍了使用electron实现百度网盘悬浮窗口功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    安卓悬浮窗相关-悬浮窗口和半透明实现效果.rar

    悬浮窗口和半透明实现效果.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    悬浮窗口,通过悬浮窗口打开其他程序

    这是兴趣之余写的一个类似360那样的悬浮窗,可任意移动,点击可...3、通过悬浮窗口打开其他程序; 4、悬浮窗口的关闭; 5、设置悬浮窗口可任意移动,并且不影响其他程序使用, 6、附带一个计算器,用于测试打开指定程序

    JavaScript 悬浮窗口实现代码

    效果如图:代码如下: 悬浮窗口示例 Try scrolling this window. 这是悬浮窗口 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

    mfc实现悬浮子窗口(动态实现)

    mfc实现悬浮子窗口(动态实现):可以分为2种方法来实现;第一种是通过比较简单而实用的 动态实现api去修改属性;第二种办法是 实现的效果类似vs2008这样的 悬浮框、停靠等,是通过单文档 中 CDockablePane;也可以...

    悬浮窗口

    我的悬浮窗口

    jquery仿360猜你喜欢隐藏悬浮窗口特效

    这是一款用jQuery制作的仿360浏览器的猜你喜欢隐藏悬浮窗口效果。这款悬浮窗口插件开始时隐藏的,但用户点击后,悬浮窗口水平伸展开来,并且可以用关闭按钮来关闭它。

    视频聊天悬浮窗口切换效果

    视频聊天悬浮窗口切换效果视频聊天悬浮窗口切换效果视频聊天悬浮窗口切换效果视频聊天悬浮窗口切换效果视频聊天悬浮窗口切换效果视频聊天悬浮窗口切换效果视频聊天悬浮窗口切换效果

Global site tag (gtag.js) - Google Analytics