调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据WindowManager.LayoutParams属性不同,效果也就不同了。比如创建系统顶级窗口,实现悬浮窗口效果!
WindowManager的方法很简单,基本用到的就三个addView,removeView,updateViewLayout。
而WindowManager.LayoutParams的属性就多了,非常丰富,具体请查看SDK文档。这里给出Android中的WindowManager.java源码,可以具体看一下。
下面是简单示例代码:
 
[java] 
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(); 
  
        /**
         *以下都是WindowManager.LayoutParams的相关属性
         * 具体用途请参考SDK文档
         */ 
        wmParams.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);  //创建View 
    } 

别忘了在AndroidManifest.xml中添加权限:
[java]
<span><</span>uses<span>-</span>permission android<span>:</span>name<span>=</span><span>"android.permission.SYSTEM_ALERT_WINDOW"</span> <span>/></span> 
PS:这里举例说明一下type的值的意思:
[java] 
这个FIRST_SYSTEM_WINDOW的值就是2000。2003和2002的区别就在于2003类型的View比2002类型的还要top,能显示在系统下拉状态栏之上!

注:使用popuwindow来实现悬浮的视频播放器,可实现多开,且让播放器处于最前端,有兴趣的朋友可以自己做一个试试。

作者:hahashui123

最新文章

  1. Oracle常用SQL查询(2)
  2. Linux第03天
  3. 一定要学会paxos算法!
  4. PHP error_log() 函数
  5. javaweb学习总结二十(http响应)
  6. 【Android - MD】之CoordinatorLayout的使用
  7. css渐变色
  8. ionic 3 常见报错及解决办法
  9. 自定义Fiddler插件二
  10. 洛谷 P2420 让我们异或吧 解题报告
  11. Docker与.Net项目类型
  12. UFPS入门: Unity FPS 教程
  13. @JSONField注解的使用
  14. ios苹果机系统的1px显示解决方案
  15. 解除单个文件的与svn服务器的关联
  16. ubuntu 上已经安装libxml2还提示需要reinstall的解决方法
  17. js 数字游戏
  18. 在Ubuntu上安装Brackets的步骤(加源和移除源)
  19. HTML5 小实例
  20. ionic3 cordova ionic-native插件

热门文章

  1. 转 用JS实现PHP的sprintf函数
  2. Nodejs操作redis
  3. Repaint轨迹保留?(待处理,待编辑)
  4. NVelocity+Bootstrap tab控件 异常之
  5. 在cenOS下安装apache出现-bash: /etc/init.d/httpd: 没有那个文件或目录
  6. WPF中ComboBox绑定数据库自动读取产生数据
  7. Oracle常用命令(持续更新)
  8. BizTalk开发系列(一) &quot;Hello World&quot;
  9. String-原型属性
  10. 前后端分离开发——模拟数据mock.js