Android中悬浮窗口
调用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
最新文章
- Oracle常用SQL查询(2)
- Linux第03天
- 一定要学会paxos算法!
- PHP error_log() 函数
- javaweb学习总结二十(http响应)
- 【Android - MD】之CoordinatorLayout的使用
- css渐变色
- ionic 3 常见报错及解决办法
- 自定义Fiddler插件二
- 洛谷 P2420 让我们异或吧 解题报告
- Docker与.Net项目类型
- UFPS入门: Unity FPS 教程
- @JSONField注解的使用
- ios苹果机系统的1px显示解决方案
- 解除单个文件的与svn服务器的关联
- ubuntu 上已经安装libxml2还提示需要reinstall的解决方法
- js 数字游戏
- 在Ubuntu上安装Brackets的步骤(加源和移除源)
- HTML5 小实例
- ionic3 cordova ionic-native插件
热门文章
- 转 用JS实现PHP的sprintf函数
- Nodejs操作redis
- Repaint轨迹保留?(待处理,待编辑)
- NVelocity+Bootstrap tab控件 异常之
- 在cenOS下安装apache出现-bash: /etc/init.d/httpd: 没有那个文件或目录
- WPF中ComboBox绑定数据库自动读取产生数据
- Oracle常用命令(持续更新)
- BizTalk开发系列(一) ";Hello World";
- String-原型属性
- 前后端分离开发——模拟数据mock.js